可以方便写个函数:
def showPopoutMenu(w, menu):
def popout(event):
menu.post(event.x + w.winfo_rootx(), event.y + w.winfo_rooty())
w.update()
w.bind('<Button-3>', popout)
应用:
1、用于整个窗口:
from tkinter import *
# Python 2.X 可以用from Tkinter import *
def showPopoutMenu(w, menu):
def popout(event):
menu.post(event.x + w.winfo_rootx(), event.y + w.winfo_rooty())
w.update()
w.bind('<Button-3>', popout)
w = Tk()
w.title('Pop-Out Menu')
menu = Menu(w)
menu.add_cascade(label = '功能一')
menu.add_cascade(label = '功能二')
showPopoutMenu(w, menu)
w.mainloop()
效果:

2、用于控件
from tkinter import *
# Python 2.X 可以用from Tkinter import *
def showPopoutMenu(w, menu):
def popout(event):
menu.post(event.x + w.winfo_rootx(), event.y + w.winfo_rooty())
w.update()
w.bind('<Button-3>', popout)
w = Tk()
w.title('Pop-Out Menu')
lab = Label(text = 'I am a Label widget with right-click menu! ')
lab.place(x = 0, y = 0)
menu = Menu(w)
menu.add_cascade(label = '功能一')
menu.add_cascade(label = '功能二')
showPopoutMenu(lab, menu)
w.mainloop()
效果:

这篇博客介绍了如何在Tkinter中创建一个右键弹出菜单的功能,并提供了两个示例,一个是应用于整个窗口,另一个是应用于特定控件如标签。通过`showPopoutMenu`函数和`Menu`类,实现了鼠标右键点击时显示菜单,菜单包含多个功能选项,如'功能一'和'功能二'。这个功能对于GUI应用程序的交互性提升有很大帮助。
1324





