当前位置: 首页 > 网络知识

Python基础入门学习笔记 073 GUI的终极选择:Tkinter10

时间:2026-01-29 09:25:55

Munu组件

Tkinter提供了一个Menu组件,用于实现顶级菜单、下拉菜单和弹出菜单。

实例1:创建一个顶级菜单(或称窗口主菜单)

1 fr tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 9 menubar = Menu(root)#创建一个顶级菜单 10 menubar.add_cmand(label="Hello",cmand=callback)#创建一个顶级菜单对象 11 menubar.add_cmand(label="Quit",cmand=root.quit) 12 13 #显示菜单 14 rootonfig(menu=menubar) 15 16 mainloop()

实例2:创建添加到主菜单上的下拉菜单

1 fr tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 #创建一个顶级菜单 9 menubar = Menu(root) 10 11 #创建下拉菜单filemenu包含内容 12 filemenu=Menu(menubar,tearoff=False)#创建一个从属于menubar的子菜单(下拉菜单)filemenu 13 filemenu.add_cmand(label="打开",cmand=callback)#创建一个下拉菜单对象 14 filemenu.add_cmand(label="保存",cmand=callback) 15 filemenu.add_separator()#插入分隔线 16 filemenu.add_cmand(label="退出",cmand=root.quit) 17 #创建一个顶级菜单对象“文件”,filemenu从属于这个对象(或称将filemenu添加到顶级菜单“文件”中) 18 menubar.add_cascade(label="文件",menu=filemenu) 19 20 #创建另一个下拉菜单editmenu包含内容 21 editmenu=Menu(menubar,tearoff=False)#创建一个从属于menubar的子菜单(下拉菜单)editmenu 22 editmenu.add_cmand(label="剪切",cmand=callback) 23 editmenu.add_cmand(label="拷贝",cmand=callback) 24 editmenu.add_separator()#插入分隔线 25 editmenu.add_cmand(label="粘贴",cmand=callback) 26 #创建一个顶级菜单对象“编辑”,editmenu从属于这个对象(或称将editmenu添加到顶级菜单“编辑”中) 27 menubar.add_cascade(label="编辑",menu=editmenu) 28 29 #显示菜单 30 rootonfig(menu=menubar) 31 32 mainloop()

实例3:创建一个弹出菜单方法

1 fr tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 def popup(event): 9 menu.post(event.x_root,event.y_root)#在此时鼠标位置弹出显示窗口 10 11 #创建一个顶级菜单menu 12 menu = Menu(root,tearoff=False) 13 14 #创建顶级菜单menu包含内容 15 menu.add_cmand(label="撤销",cmand=callback)#创建一个顶级菜单对象 16 menu.add_cmand(label="重做",cmand=callback) 17 #创建一个框架 18 frame = Frame(root,width=100,height=100) 19 frame.pack() 20 21 #将鼠标右键与popup方法绑定 22 frame.bind("<Button3>",popup) 23 24 #显示菜单 25 #rootonfig(menu=menu) 26 27 mainloop()

实例4:菜单弹出

1 fr tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 def popup(event): 9 menu.post(event.x_root,event.y_root)#在此时鼠标位置弹出显示窗口 10 11 #创建一个顶级菜单menu 12 menu = Menu(root,tearoff=True) 13 14 #创建顶级菜单menu包含内容 15 menu.add_cmand(label="撤销",cmand=callback)#创建一个顶级菜单对象 16 menu.add_cmand(label="重做",cmand=callback) 17 #创建一个框架 18 frame = Frame(root,width=500,height=500) 19 frame.pack() 20 21 #将鼠标右键与popup方法绑定 22 frame.bind("<Button3>",popup) 23 24 #显示菜单 25 #rootonfig(menu=menu) 26 27 mainloop()

实例5:添加单选组件radiobutton和多选按钮checkbutton

1 fr tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 #创建一个顶级菜单 9 menubar = Menu(root) 10 #创建checkbutton关联变量 11 openVar = IntVar() 12 saveVar = IntVar() 13 exitVar = IntVar() 14 #创建下拉菜单filemenu包含内容 15 filemenu=Menu(menubar,tearoff=True)#创建一个从属于menubar的子菜单(下拉菜单)filemenu 16 filemenu.add_checkbutton(label="打开",cmand=callback,variable=openVar)#创建一个下拉菜单对象 17 filemenu.add_checkbutton(label="保存",cmand=callback,variable=saveVar) 18 filemenu.add_separator()#插入分隔线 19 filemenu.add_checkbutton(label="退出",cmand=root.quit,variable=exitVar) 20 #创建一个顶级菜单对象“文件”,filemenu从属于这个对象(或称将filemenu添加到顶级菜单“文件”中) 21 menubar.add_cascade(label="文件",menu=filemenu) 22 23 #创建radiobutton关联变量 24 editVar = IntVar() 25 editVar.set(1) 26 27 #创建另一个下拉菜单editmenu包含内容 28 editmenu=Menu(menubar,tearoff=True)#创建一个从属于menubar的子菜单(下拉菜单)editmenu 29 editmenu.add_radiobutton(label="剪切",cmand=callback,variable=editVar,value=1) 30 editmenu.add_radiobutton(label="拷贝",cmand=callback,variable=editVar,value=2) 31 editmenu.add_separator()#插入分隔线 32 editmenu.add_radiobutton(label="粘贴",cmand=callback,variable=editVar,value=3) 33 #创建一个顶级菜单对象“编辑”,editmenu从属于这个对象(或称将editmenu添加到顶级菜单“编辑”中) 34 menubar.add_cascade(label="编辑",menu=editmenu) 35 36 #显示菜单 37 rootonfig(menu=menubar) 38 39 mainloop()

Menubutton组件(希望菜单按钮出现在其它位置时)

Menubutton组件是一个与Menu组件相关联的按钮,它可以放在窗口中的任意位置,并且在被按下时弹出下拉菜单

实例1:

1 fr tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 #创建一个顶级菜单Menubutton按钮,设置为浮起显示(RAISED) 9 mb = Menubutton(root,text="点我",relief=RAISED) 10 11 mb.pack(side=RIGHT)#设置为右中显示 12 13 #创建下拉菜单filemenu包含内容 14 filemenu = Menu(mb,tearoff=False)#创建一个从属于mb的下拉菜单filemenu 15 filemenu.add_checkbutton(label="打开",cmand=callback,selectcolor="yellow") 16 filemenu.add_cmand(label="保存",cmand=callback)#创建一个下拉菜单对象"保存“ 17 filemenu.add_separator() 18 filemenu.add_cmand(label="退出",cmand=root.quit) 19 #显示菜单 20 mbonfig(menu=filemenu) 21 22 mainloop()

OptionMenu(选项菜单)组件

选项菜单的发明弥补了Listbox组件无法实现下拉列表框的遗憾

实例1:

1 fr tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 variable = StringVar()#创建字符串变量variable 9 variable.set("one")#初始值设置为"one" 10 w = OptionMenu(root,variable,"one","two","three") 11 pack() 12 13 mainloop()

实例2:多个选项添加到选项菜单中

1 fr tkinter import * 2 3 def callback(): 4 print("被调用了") 5 6 root = Tk() 7 8 OPTIONS = [ 9 "Hadley", 10 "小土豆", 11 "yiwofeiye", 12 "RAN" 13 ] 14 15 variable = StringVar()#创建字符串变量variable 16 variable.set(OPTIONS[0])#初始值设置为"one" 17 w = OptionMenu(root,variable,*OPTIONS) 18 pack() 19 20 def callback(): 21 print(variable.get()) 22 23 Button(root,text="点我",cmand=callback).pack() 24 25 mainloop()



上一篇:Python基础入门学习笔记 069 GUI的终极选择:Tkinter6
下一篇:Python基础入门学习笔记 053 论一只爬虫的自我修养
python
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素