如何使 tkinter 右键单击菜单仅在一个小部件上工作?

阿尼霍普金斯

有没有一种简单的方法可以让右键菜单只在 texty 上打开而不是在整个窗口上打开?

这是一个快速混搭来说明我的问题。从第 25 行的 texty 继承是在黑暗中的一个镜头,这不起作用,但它接近一个简单的解决方案,就像我正在寻找的那样。每次我想设置右键菜单时,我都希望避免对整个班级进行编程。

from tkinter import *
from tkinter import ttk

def menu_popup(event):
    try:
        popup.tk_popup(event.x_root, event.y_root, 0)        
    finally:
        popup.grab_release()

        
win = Tk()

win.geometry("600x550+125+125")

e = Entry(win, width=50, font=('Helvetica', 11))
e.pack()
e.insert(0, "Some text....")

label = Label(win, text="Right-click to see a menu", font= ('Helvetica 18'))
label.pack(pady= 40)

texty=Text(win, height=10)
texty.pack()

popup = Menu(texty, tearoff=0)
popup.add_command(label="New")
popup.add_separator()
popup.add_command(label="Open")
popup.add_separator()
popup.add_command(label="Close")

win.bind("<Button-3>", menu_popup)

button = ttk.Button(win, text="Quit", command=win.destroy)
button.pack()

mainloop()
酷云

应为相应事件执行回调的小部件由您调用的小部件决定bind(以及绑定级别*)。因此,如果您希望在 中识别事件texty,则对其应用绑定。

texty.bind("<Button-3>", menu_popup)

*bind_all无论哪个小部件具有焦点或被调用,它都会执行。阅读54.1。绑定级别以获取更多信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除Tkinter小部件位置?

如何从窗口中删除Tkinter小部件?

如何从窗口中删除Tkinter小部件?

如何从Tkinter文本小部件获取输入?

如何从Tkinter文本小部件获取输入?

tkinter,如何获取Entry小部件的值?

Tkinter:如何制作一个圆角文本小部件?

如何删除文本小部件tkinter中的最后一个字符

如何将Tkinter Text小部件的撤消/重做历史复制到另一个

如何更改tkinter小部件的边框颜色?

如何使GeometryReader仅在一个维度上工作?

Python Tkinter如何放大小部件

如何同时但异步移动两个tkinter小部件?

Python Tkinter-如何返回小部件

如果我在一个函数中创建了小部件,如何使用Python Tkinter在另一个函数中访问它们?

如何获得Tkinter小部件属性?

如何保持小部件在Tkinter中居中?

如何获取小部件的名称Python Tkinter

如何更新Tkinter Label小部件?

如何在一个框架中相对于Tkinter中的其他框架扩展窗口小部件的大小(帮助:Tkinter网格管理)

如何更改 tkinter txt 小部件颜色

如何将多个按钮链接到 tkinter 中的一个文本小部件?

如何允许在一组 tkinter 小部件中连续切换焦点而不会卡在最后一个小部件上?

如何将用户输入设置为另一个框架中 Tkinter Entry 小部件的默认文本?

Tkinter Treeview 小部件上的右键单击菜单

如何从 tkinter 的菜单小部件打开一个新窗口

如何使用多个小部件的 1 个函数从 Tkinter/Python 的弹出菜单中复制文本?

如何在 Tkinter 中分别启用右键单击输入和输出小部件以进行粘贴和复制?

如何从 tkinter 获取标签小部件?