【问题标题】:how to create a pop up menu which is linked with listbox in tkinter?如何在 tkinter 中创建一个与列表框链接的弹出菜单?
【发布时间】:2021-05-14 00:15:27
【问题描述】:

我正在尝试创建一个列表框,在其中按“Enter 键”AKA <Return>
在所选行前面弹出一个菜单,例如this

我尝试使用 this 示例,但似乎菜单仅在鼠标所在的位置弹出

我要问的甚至可能吗?如果是这样,如何获取列表框中任何行的 x,y 位置?

很遗憾,我什至无法提供伪代码来进一步解释,因为我不知道它会是什么样子,所以请原谅我不够清晰

【问题讨论】:

    标签: python tkinter listbox popupmenu


    【解决方案1】:

    列表框的curselection 方法将返回所选项目的列表。列表框的bbox 方法将给出项目相对于列表框本身的坐标。您可以使用winfo_rootxwinfo_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)
    

    【讨论】:

    • 非常感谢,每次我遇到 tkinter 问题时,您的回答似乎总是有帮助,请问您是从哪里学习 tkinter 的?我的意思是它必须来自多年的经验,但您是否考虑过创建自己的网站来传递知识?
    • 我在 90 年代中期开始使用 tcl/tk 创建商业应用程序。 tkinter 只是 tcl/tk 的包装器。我通过在这个网站上回答问题来学习 tkinter,这迫使我将我对 tk 的知识应用到 python 中。
    猜你喜欢
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多