【发布时间】:2014-01-18 05:41:42
【问题描述】:
我正在运行 Python 3.3.3(现在我在 Ubuntu 上,但我也在 Mac 和 Windows 上开发,我还没有测试过)。我有一个 Treeview 对象,它响应右键单击项目并根据您单击的内容显示上下文菜单...但我注意到,如果您在原始菜单启动时右键单击其他位置,它只会打开另一个菜单。
事实上,正常的点击也不会隐藏它们。即使我关闭窗口,菜单仍然保持浮动。让他们离开的唯一方法是单击其中一个选项。
最终结果是这样的:
我的菜单代码如下:
def rightclick_listitem(self, event):
rowitem = self.sources.identify('item', event.x, event.y)
if rowitem == '':
print('Right clicked an empty space.')
return
# user right clicked something.
self.sources.selection_set(rowitem)
rcmenu = Menu(self.root, tearoff=0)
plugin_disabled=self.sources.item(rowitem, 'values')[0] == 'Disabled'
if plugin_disabled:
rcmenu.add_command(label='Plugin is disabled...',
command=self.plugin_disabled_click)
rcmenu.add_command(label='Plugin options',state='disabled' if plugin_disabled else 'active')
rcmenu.add_command(label='Uninstall plugin')
rcmenu.post(event.x_root, event.y_root)
调用此代码的代码位于此处:
#RIGHTMOUSE is a variable that changes based on OS due to the way Mac OSX works
#sources is the treeview object
self.sources.bind(RIGHTMOUSE, self.rightclick_listitem)
我用谷歌搜索了一下,只有一些人问同样的问题却没有答案。总的来说,我对 tkinter 和 python 还有些陌生,对此一无所知。我还将其他操作绑定到树视图。
如果您需要更多源代码,我的项目在这里:https://github.com/Mgamerz/Fresh-Set-of-Images (freshsetofimages.py)
感谢任何帮助。
使这个出现所需的插件:https://github.com/Mgamerz/fsoi_plugins
【问题讨论】:
标签: python tkinter contextmenu