首页 > Python基础教程 > Tkinter
阅读:2,349
Python Tkinter OptionMenu控件用法
OptionMenu 组件用于构建一个带菜单的按钮,该菜单可以在按钮的四个方向上展开,展开方向可通过 direction 选项控制。
使用 OptionMenu 比较简单,直接调用它的如下构造函数即可:
下面程序创建了一个 OptionMenu,并通过单选钮来控制 OptionMenu 中菜单的展开方向:
程序中第 43 行代码通过动态改变 OptionMenu 的 direction 选项值,就可以动态改变按钮上菜单的展开方向。
运行上面程序,选中下方的“left”单选钮,就可以看到如图 1 所示的效果。
图 1 OptionMenu 组件
使用 OptionMenu 比较简单,直接调用它的如下构造函数即可:
__init__ (self, master, variable, value, *values, **kwargs)
其中,master 参数的作用与所有的 Tkinker 组件一样,指定将该组件放入哪个容器中。其他参数的含义如下:- variable:指定该按钮上的菜单与哪个变量绑定。
- value:指定默认选择菜单中的哪一项。
- values:Tkinter 将收集为此参数传入的多个值,为每个值创建一个菜单项。
- kwargs:用于为 OptionMenu 配置选项。除前面介绍的常规选项之外,还可通过 direction 选项控制菜单的展开方向。
下面程序创建了一个 OptionMenu,并通过单选钮来控制 OptionMenu 中菜单的展开方向:
from tkinter import * # 导入ttk from tkinter import ttk class App: def __init__(self, master): self.master = master self.initWidgets() def initWidgets(self): self.sv = StringVar() # 创建一个OptionMenu控件 self.om = ttk.OptionMenu(root, self.sv, # 绑定变量 'Python', # 设置初始选中值 'Kotlin', # 以下多个值用于设置菜单项 'Ruby', 'Swift', 'Java', 'Python', 'JavaScript', 'Erlang', command = self.print_option) # 绑定事件处理方法 self.om.pack() # 创建Labelframe容器 lf = ttk.Labelframe(self.master, padding=20, text='请选择菜单方向') lf.pack(fill=BOTH, expand=YES, padx=10, pady=10) # 定义代表Labelframe的标题位置的12个常量 self.directions = ['below', 'above', 'left', 'right', 'flush'] i = 0 self.intVar = IntVar() # 使用循环创建多个Radiobutton,并放入Labelframe中 for direct in self.directions: Radiobutton(lf, text= direct, value=i, command=self.change, variable=self.intVar).pack(side=LEFT) i += 1 self.intVar.set(9) def print_option(self, val): # 通过两种方式来获取OptionMenu选中的菜单项的值 print(self.sv.get(), val) def change(self): # 通过direction选项改变OptionMenu上菜单的展开方向 self.om['direction'] = self.directions[self.intVar.get()] root = Tk() root.title("OptionMenu测试") # 改变窗口图标 root.iconbitmap('images/fklogo.ico') App(root) root.mainloop()上面程序中,第 21 行代码为 OptionMenu 的 command 选项绑定了 self.print_option 方法,这意味着当用户选择菜单中的不同菜单项时,都会触发 self.print_option 方法。该事件处理方法也比较奇葩,它可以额外指定一个参数来获取目标菜单项上的值,如上面程序中第 38 行代码所示。
程序中第 43 行代码通过动态改变 OptionMenu 的 direction 选项值,就可以动态改变按钮上菜单的展开方向。
运行上面程序,选中下方的“left”单选钮,就可以看到如图 1 所示的效果。
图 1 OptionMenu 组件
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频