Python 官方文档:入门教程 => 点击学习
OptionMenu 为可选菜单,与 Combox 功能类似创建 OptionMenu代码:import tkinter as tk root = tk.Tk() v =&nbs
OptionMenu 为可选菜单,与 Combox 功能类似
创建 OptionMenu
代码:
import tkinter as tk
root = tk.Tk()
v = tk.StringVar(root)
v.set('python')
om = tk.OptionMenu(root, v, 'Python', 'PHP', 'java', 'c', 'javascript')
om.pack()
root.mainloop()
结果:
显示的文本自动断行,上下行分别使用了左对齐,右对齐和居中对齐
OptionMenu 的创建需要两个必要的参数,与当前值绑定的变量,通常为一 StringVar 类型;另一个是提供可选的内容列表,由 OptionMenu 的变参数指定
设置 OptionMenu 的显示值
当 OptionMenu 与变量绑定后,直接使用变量赋值的方法即可改变当前的值
代码:
import tkinter as tk
root = tk.Tk()
v = tk.StringVar(root)
v.set('python')
# 创建一个OptionMenu控件
om = tk.OptionMenu(root, v, 'python', 'php', 'java', 'c', 'javascript')
om.pack()
print(v.get())
root.mainloop()
结果:
运行程序,OptionMenu 默认值为"python",打印出的数值也为"python"
如果设置的值不包含在当前的列表中,会是什么结果?如下的代码使用"Tkinter"来测试
代码:
import tkinter as tk
root = tk.Tk()
v = tk.StringVar(root)
v.set('tkinter')
# 创建一个OptionMenu控件
om = tk.OptionMenu(root, v, 'python', 'php', 'java', 'c', 'javascript')
om.pack()
print(v.get())
root.mainloop()
结果:
程序依旧是默认值改变为 Tkinter,打印结果也变为 Tkinter,但 Tkinter 不会添加到OptionMenu 的列表中,也就是说,当选择其它的选项时,Tkinter 的值会丢失
打印 OptionMenu 的值
代码:
import tkinter as tk
root = tk.Tk()
v = tk.StringVar(root)
v.set('tkinter')
def printoption(event):
print(v.get())
# 创建一个OptionMenu控件
om = tk.OptionMenu(root, v, 'python', 'php', 'java', 'c', 'javascript')
om.bind('<Button-1>', printoption)
om.pack()
root.mainloop()
结果:
每次点击 OptionMenu 程序打印出上次选中的项值
使用 list 作为 OptionMenu 的选项
代码:
import tkinter as tk
root = tk.Tk()
v = tk.StringVar(root)
Lang = ['python', 'php', 'java', 'c', 'javascript']
v.set('tkinter')
def printoption(event):
print(v.get())
# 创建一个OptionMenu控件
om = tk.OptionMenu(root, v, tuple(Lang))
om.bind('<Button-1>', printoption)
om.pack()
root.mainloop()
结果:
--结束END--
本文标题: tkinter -- OptionMenu
本文链接: https://lsjlt.com/news/179102.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0