📜  Tkinter 中的弹出菜单

📅  最后修改于: 2022-05-13 01:55:21.019000             🧑  作者: Mango

Tkinter 中的弹出菜单

Tkinter 是 Python 的标准 GUI(图形用户界面)包。它是Python自带的最常用的 GUI 应用程序包之一。

注意:更多信息请参考Python GUI – tkinter

菜单小部件

菜单是任何 GUI 的重要组成部分。菜单的一个常见用途是提供对各种操作的方便访问,例如保存或打开文件、退出程序或操作数据。顶级菜单显示在根或任何其他顶级窗口的标题栏下方。

句法:

menu = Menu(master, **options)

注意:更多信息请参考Python | Tkinter 中的菜单小部件

弹出菜单

弹出菜单是在用户交互时出现的上下文菜单。此菜单可以显示在客户端窗口的任何位置。下面是使用 Tkinter 库创建弹出菜单的Python代码。

#creating popup menu in tkinter
import tkinter
   
class A:
    #creates parent window
    def __init__(self):
               
        self.root = tkinter.Tk()
        self.root.geometry('500x500')
   
        self.frame1 = tkinter.Label(self.root,
                                    width = 400,
                                    height = 400,
                                    bg = '#AAAAAA')
        self.frame1.pack()
   
    #create menu
    def popup(self):
        self.popup_menu = tkinter.Menu(self.root,
                                       tearoff = 0)
          
        self.popup_menu.add_command(label = "say hi",
                                    command = lambda:self.hey("hi"))
          
        self.popup_menu.add_command(label = "say hello",
                                    command = lambda:self.hey("hello"))
        self.popup_menu.add_separator()
        self.popup_menu.add_command(label = "say bye",
                                    command = lambda:self.hey("bye"))
   
    #display menu on right click
    def do_popup(self,event):
        try:
            self.popup_menu.tk_popup(event.x_root,
                                     event.y_root)
        finally:
            self.popup_menu.grab_release()
   
    def hey(self,s):
        self.frame1.configure(text = s)
          
    def run(self):
        self.popup()
        self.root.bind("",self.do_popup)
        tkinter.mainloop()
  
a = A()
a.run()

输出:

上面代码中的弹出菜单出现在右键单击时。

职能

  • Menu(root):创建菜单。
  • add_command(label, command):在菜单上添加命令,command 参数在单击该选项时调用函数hey()。
  • add_separator():添加分隔符。
  • tk_popup(x, y):将菜单发布到作为参数给定的位置
  • grab_release():释放事件抓取
  • bind(key, event):绑定鼠标事件。