首页 > Python基础教程 > Tkinter
阅读:6,222
Python Tkinter LabelFrame用法详解(实例分析)
Labelframe 是 Frame 容器的改进版,它允许为容器添加一个标签,该标签既可以是普通的文字标签,也可以将任意 GUI 组件作为标签。
图 1 Labelframe 组件
Labelframe 允许通过如下选项对标签进行定制:
如下程序示范了对 Labelframe 的标签进行定制:
运行该程序,改变 Labelframe 的标签的位置到右下角(se)处,将看到如图 2 所示的界面。
图 2 定制 Labelframe 的标签
为了让 ttk.Labelframe 与 tkinter.LabelFrame 保持名字上的兼容,ttk 为 ttk.Labelframe 起了一个别名 ttk.LabelFrame(注意 f 的大小写),因此在程序中既可使用 ttk.Labelframe, 也可使用 ttk.LabelFrame,它们二者完全相同。
为了给 Labelframe 设置文字标签,只要为它指定 text 选项即可。如下程序示范了 Labelframe 组件的用法:from tkinter import * # 导入ttk from tkinter import ttk class App: def __init__(self, master): self.master = master self.initWidgets() def initWidgets(self): # 创建Labelframe容器 lf = ttk.Labelframe(self.master, text='请选择教程', padding=20) lf.pack(fill=BOTH, expand=YES, padx=10, pady=10) books = ['C++', 'Python', 'Linux', 'Java'] i = 0 self.intVar = IntVar() # 使用循环创建多个Radiobutton,并放入Labelframe中 for book in books: Radiobutton(lf, text=book + '教程', value=i, variable=self.intVar).pack(side=LEFT) i += 1 root = Tk() root.title("Labelframe测试") # 改变窗口图标 root.iconbitmap('1.ico') App(root) root.mainloop()上面程序首先创建了一个简单的 Labelframe 组件,并为它指定了 text 选项,该选项的内容将会作为该容器的标签。接下来程序向 Labelframe 容器中添加了 4 个 Radiobutton。运行该程序,可以看到如图 1 所示的效果。
图 1 Labelframe 组件
Labelframe 允许通过如下选项对标签进行定制:
- labelwidget:设置可以将任意 GUI 组件作为标签。
- labelanchor:设置标签的位置。该选项支持 'e'、's'、'w'、'n'、'es'、'ws'、'en'、'wn'、'ne'、'nw'、'se'、'sw' 这 12 个边项值,用于控制标签的位置。
如下程序示范了对 Labelframe 的标签进行定制:
from tkinter import * # 导入ttk from tkinter import ttk class App: def __init__(self, master): self.master = master self.initWidgets() def initWidgets(self): # 创建Labelframe容器 self.lf = ttk.Labelframe(self.master, padding=20) self.lf.pack(fill=BOTH, expand=YES, padx=10, pady=10) # 创建一个显示图片的Label bm = PhotoImage(file='images/z.png') lb = Label(self.lf, image=bm) lb.bm = bm # 将Labelframe的标题设为显示图片的Label self.lf['labelwidget'] = lb # 定义代表Labelframe的标题位置的12个常量 self.books = ['e', 's', 'w', 'n', 'es', 'ws', 'en', 'wn', 'ne', 'nw', 'se', 'sw'] i = 0 self.intVar = IntVar() # 使用循环创建多个Radiobutton,并放入Labelframe中 for book in self.books: Radiobutton(self.lf, text= book, value=i, command=self.change, variable=self.intVar).pack(side=LEFT) i += 1 self.intVar.set(9) def change(self): # 通过labelanchor选项改变Labelframe的标题的位置 self.lf['labelanchor'] = self.books[self.intVar.get()] root = Tk() root.title("Labelframe测试") # 改变窗口图标 root.iconbitmap('images/fklogo.ico') App(root) root.mainloop()上面程序通过 labelwidget 选项定制了该 Labelframe 的标签,该选项值指定为一个显示图片的 Label,因此该 Labelframe 的标签就是一张图片。与此同时,程序会根据单选钮的选中状态设置 Labelframe 的标签的位置。
运行该程序,改变 Labelframe 的标签的位置到右下角(se)处,将看到如图 2 所示的界面。
图 2 定制 Labelframe 的标签
所有教程
- 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视频