如何在 tkinter 中创建与列表框链接的弹出菜单?
how to create a pop up menu which is linked with listbox in tkinter?
我正在尝试创建一个列表框,在其中按 'Enter key' 又名 <Return>
将
在所选行的前面弹出一个菜单,例如 this
我尝试使用 示例,但菜单似乎只在鼠标所在的位置弹出
我问的是什至可以做的吗?如果是这样,如何获取列表框中任意行的 x、y 位置?
遗憾的是,我什至无法提供伪代码来进一步解释,因为我什至不知道它会是什么样子,所以请原谅我不够清晰
列表框的 curselection
方法将 return 选定项目的列表。列表框的 bbox
方法将给出项目相对于列表框本身的坐标。您可以使用 winfo_rootx
和 winfo_rooty
来获取列表框在屏幕上的绝对坐标。您可以使用所有这些信息将菜单放在所选项目附近。
例如:
def show_popup(event):
selection = event.widget.curselection()
if selection:
item = selection[0]
rootx = event.widget.winfo_rootx()
rooty = event.widget.winfo_rooty()
itemx, itemy, itemwidth, itemheight = event.widget.bbox(item)
popup_menu.tk_popup(rootx+event.widget.winfo_width()-10, rooty+itemy+10)
我正在尝试创建一个列表框,在其中按 'Enter key' 又名 <Return>
将
在所选行的前面弹出一个菜单,例如 this
我尝试使用
我问的是什至可以做的吗?如果是这样,如何获取列表框中任意行的 x、y 位置?
遗憾的是,我什至无法提供伪代码来进一步解释,因为我什至不知道它会是什么样子,所以请原谅我不够清晰
列表框的 curselection
方法将 return 选定项目的列表。列表框的 bbox
方法将给出项目相对于列表框本身的坐标。您可以使用 winfo_rootx
和 winfo_rooty
来获取列表框在屏幕上的绝对坐标。您可以使用所有这些信息将菜单放在所选项目附近。
例如:
def show_popup(event):
selection = event.widget.curselection()
if selection:
item = selection[0]
rootx = event.widget.winfo_rootx()
rooty = event.widget.winfo_rooty()
itemx, itemy, itemwidth, itemheight = event.widget.bbox(item)
popup_menu.tk_popup(rootx+event.widget.winfo_width()-10, rooty+itemy+10)