Tkinter布局管理控件有哪些?

新知榜官方账号

2023-12-01 16:31:42

介绍

Tkinter布局管理控件中常用的4个控件:Frame控件、LabelFrame控件、PanedWindow控件、Toplevel控件。下面我们来看看这些控件怎么使用,都有哪些不同的用途。

1. Toplevel控件

Toplevel控件是一个顶级窗口控件(也被称为“子窗体”控件)。使用Toplevel控件可以创建新的窗体,并在其中添加其他控件。下面是一个简单的例子:

import tkinter as tk

def create_new_window():
    top = tk.Toplevel()
    top.title('New Window')
    tk.Label(top, text='This is a new window').pack()

root = tk.Tk()

btn = tk.Button(root, text='Create New Window', command=create_new_window)
btn.pack()

root.mainloop()

运行效果如下:

Toplevel控件示例

Toplevel控件有如下方法:

  • deiconify():在使用iconify()withdraw()方法后重新显示该窗口
  • frame():返回窗口识别码
  • group(window):将窗口加入window窗口群组中
  • iconify():将窗口图标化(最小化),使用deiconify()方法重新显示
  • protocol(name,function):绑定回调函数,name参数可以是1) 'WM_DELETE_WINDOW':窗口被关闭的时候;2) 'WM_SAVE_YOURSELF':窗口被保存的时候;3) 'WM_TAKE_FOCUS':窗口获得焦点的时候。
  • state():设置和获得当前窗口的状态,参数值:'normal'(正常状态)、'withdrawn'(移除窗口)、'icon'(最小化)、'zoomed'(放大)
  • transient(master):指定为master的临时窗口
  • withdraw():将窗口从屏幕上移动到了主窗口之外

2. PanedWindow控件

PanedWindow控件也叫窗格界面,提供了“手柄”功能(设置参数showhandle=True来启用),通过拖动“手柄”图标也可以改变每块区域的大小。下面是一个范例:

import tkinter as tk

def create_paned_window():
    root = tk.Tk()

    # 创建一个水平方向的PanedWindow控件
    # 添加到主窗口中,默认为水平方向
    pw = tk.PanedWindow(root, orient='horizontal')
    pw.pack(fill=tk.BOTH, expand=1)

    # 在窗口区的左侧添加两个水平方向的Label
    left = tk.Label(pw, text='Left Pane', width=10)
    pw.add(left)
    right = tk.Label(pw, text='Right Pane', width=10)
    pw.add(right)

    root.mainloop()

运行效果如下:

PanedWindow控件示例

该控件有如下方法:

  • add(child):添加一个新的子组件
  • add(child, **option):参数值afterbeforesticky
  • forget(child):删除子组件
  • panecget(child, option):获得子组件的值
  • paneconfig(child, **options):设置子组件的各种选项
  • panes():将父组件中包含的子组件以列表的形式返回
  • sash_coord(index):返回一个二元组表示分割线的起点坐标
  • sash_place(index, x, y):将指定的分割线移动到一个新的位置

3. LabelFrame控件

LabelFrame控件是Frame控件的变体,其主要作用也是对控件进行分组处理。下面是一个范例:

import tkinter as tk

def create_label_frame():
    root = tk.Tk()

    # 定义第一个容器,使用labelanchor='w'来设置标题的方位
    lf = tk.LabelFrame(root, text='销售部', labelanchor='w')
    lf.pack(fill='both', expand='yes')

    tk.Label(lf, text='张三').grid(row=0, column=0)
    tk.Label(lf, text='李四').grid(row=0, column=1)
    tk.Label(lf, text='王五').grid(row=1, column=0)
    tk.Label(lf, text='赵六').grid(row=1, column=1)

    root.mainloop()

运行效果如下:

LabelFrame控件示例

其属性如下:

  • bg:设置背景颜色
  • bd:边框宽度
  • colormap:颜色映射
  • cursor:鼠标在Frame上滑过的样式
  • height/width:设置Frame的高度和宽度
  • highlightbackground:当Frame没有获得焦点的时候高亮边框的颜色
  • highlightcolor:当Frame获得焦点的时候高亮边框的颜色
  • highlightthickness:指定高亮边框的宽度,默认值是0
  • padx/pady:距离主窗口在水平/垂直方向上的外边距
  • relief:指定边框的样式,参数值:'sunken''raised''groove''ridge''flat'
  • takefocus:组件是否接受输入焦点
  • container:参数值为True,则窗体将被用作容器使用,一些其他程序也可以被嵌入

4. Frame控件

Frame控件是最常用的控件,可以在主窗口内放置多个Frame控件,并且每个Frame中还可以嵌套一个或者多个Frame,从而将主窗口界面划分成多个区域。用法和属性与LabelFrame控件大同小异,这里就不再累述。

本页网址:https://www.xinzhibang.net/article_detail-21652.html

寻求报道,请 点击这里 微信扫码咨询

相关工具

相关文章

相关快讯