python frame_Python Tkinter LabelFrame用法详解(实例分析)

Labelframe 是 Frame 容器的改进版,它允许为容器添加一个标签,该标签既可以是普通的文字标签,也可以将任意 GUI 组件作为标签。

为了让 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 所示的效果。

0-1561110272.gif

图 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-1561110272.gif

图 2 定制 Labelframe 的标签

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值