trackpopupmenu是什么?这篇给你讲的明明白白!

吉云

今天又搞一天的代码,总算把这个 trackpopupmenu 给弄明白。我还以为这是个啥高级玩意儿,结果搞半天,就是一个弹出菜单,就像咱平时在桌面点鼠标右键出来的那种菜单。

一开始我是咋弄的?我记得好像是在网上找些资料,说要用啥子 tkinter 库。这库我之前也用过,做些简单的界面还行。然后,就照着例子,先创建一个菜单,往里面加几个选项,比如“新建”、“打开”、“保存”啥的。

trackpopupmenu是什么?这篇给你讲的明明白白!

然后,我就想让这个菜单弹出来,咋弹?网上说要用 tk_popup 这个方法。我就试下,还真弹出来!但是,位置不对,它老是蹦到屏幕的左上角,这不行,得让它在我鼠标点的地方弹出来。

然后我就继续查资料,发现要获取鼠标的坐标,然后再把这个坐标传给 tk_popup 方法。这下总算对,菜单终于乖乖地在我点的地方显示。

后来我又想,能不能用在其他地方?比如,我在一个窗口上点右键,也弹出个菜单?我又去翻翻资料,发现可以用 GetMenu 这个函数来获取窗口的菜单,然后再用 TrackPopupMenu 这个函数来显示。我试下,还真行!

不过这里有个坑。TrackPopupMenu 这个函数用的坐标是屏幕坐标,啥意思?就是说,它是根据整个屏幕来定位的,不是根据你的窗口。你得把窗口的坐标转换成屏幕坐标,不然菜单的位置就不对。这里要用一个叫 ClientToScreen 的函数来转换。

遇到的麻烦

  • 一开始不知道 trackpopupmenu 是以为是啥高级功能。
  • 菜单弹出的位置不对,老跑到左上角。
  • 不知道 TrackPopupMenu 用的是屏幕坐标,还得转换。
  • 关闭菜单的时候,我一开始以为点一下外面就自动关,结果发现有时候不行。还是老老实实用代码发送一个消息给菜单,让它关闭。

今天算是把这个 trackpopupmenu 给搞明白,以后要做弹出菜单就不怕。也不难,就是细节比较多,容易踩坑。还是得多实践,多

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]