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

广告位

Labelframe 是 Frame 容器的改进版,它允许为容器添加一个标签,该标签既可以是普通的文字标签,也…

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

Python Tkinter LabelFrame用法详解(实例分析)
图 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 所示的界面。

Python Tkinter LabelFrame用法详解(实例分析)
图 2 定制 Labelframe 的标签

关于作者: Python基础入门教程

为您推荐

广告位

发表评论