首页 > 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视频