相关文章推荐
笑点低的肉夹馍  ·  8点1氪丨Manner咖啡创始人夫妇身家72 ...·  8 月前    · 
逆袭的山寨机  ·  加勒比122910-573跟1PONDO-0 ...·  1 年前    · 
重感情的哑铃  ·  深度解析|销量黑马北汽幻速停产 ...·  1 年前    · 
果断的海豚  ·  二次元的困境:如何在三次元世界里变现-经济观察网·  1 年前    · 
面冷心慈的汉堡包  ·  什么是NLP思维逻辑层次_向上的车轮的博客- ...·  1 年前    · 
Code  ›  tkinter -- OptionMenu开发者社区
python root tkinter
https://cloud.tencent.com/developer/article/1176099
风流的小狗
1 年前
作者头像
py3study
0 篇文章

tkinter -- OptionMenu

前往专栏
腾讯云
备案 控制台
开发者社区
学习
实践
活动
专区
工具
TVP
文章/答案/技术大牛
写文章
社区首页 > 专栏 > python3 > 正文

tkinter -- OptionMenu

发布 于 2018-08-03 10:36:05
861 0
举报

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())
 
推荐文章
笑点低的肉夹馍  ·  8点1氪丨Manner咖啡创始人夫妇身家72亿;茅台发布“自制假茅台鉴定为真”核实说明;阿里巴巴全球数学竞赛决赛试题公布_公司_上市_门店
8 月前
逆袭的山寨机  ·  加勒比122910-573跟1PONDO-0102是同一部吗 求真相_百度知道
1 年前
重感情的哑铃  ·  深度解析|销量黑马北汽幻速停产 究竟是天灾还是人祸? - 知乎
1 年前
果断的海豚  ·  二次元的困境:如何在三次元世界里变现-经济观察网
1 年前
面冷心慈的汉堡包  ·  什么是NLP思维逻辑层次_向上的车轮的博客-CSDN博客
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号