布局管理控件-Tkinter可视化编程四大布局控件详解

带你走进 @ 机器人时代

Discover 点击上面蓝色文字关注我们


Tkinter布局管理控件
有Frame控件、LabelFrame控件、PanedWindow控件、Toplevel控件四个常用的控件。

下面我们来看看这些控件怎么使用,都有哪些不同的用途:

Topleve控件 是一个顶级窗口控件(也被称为“子窗体”控件)先来看一个简单的例子:

import tkinter as tk
w = tk.Tk()
w.geometry('500x190+710+410')
w.title("工作机器人时代-微信公众平台")
w.iconbitmap('1.ico')
w.resizable(False, False)
#布局管理Topleve 控件
def c_p():
    top = tk.Toplevel()
    top.title("机器工作时代")
    top.geometry('300x200+400+300')
    top.iconbitmap('1.ico')
    m = tk.Label(top, 
    text=f"机器工作时代的新窗口
该窗口的识别码是:{top.frame()}",
    font=('微软雅黑',12))
    m.place(x=20,y=30)
    tk.Button(top,text='关闭这个窗口',
        command=top.destroy).place(x=100,y=100)
tk.Button(w, text="点击打开新面板", 
   width=20,height=3,command=c_p).place(x=50,y=50)
w.mainloop()

运行效果如下:

我们来看看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():将窗口从屏幕上移动到了主窗口之外

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

我们来看一个范例:

from tkinter import *
import tkinter as tk
w = tk.Tk()
w.geometry('700x220+710+410')
w.title("工作机器人时代-微信公众平台")
w.iconbitmap('1.ico')
w.resizable(False, False)
# 创建一个水平方向的窗格控件
# 添加到主窗口中,默认为水平方向
m = tk.PanedWindow(w)
m.pack(fill=tk.BOTH, expand=1)
# 在窗口区的左侧添加两个水平方向的 Label
l =tk. Label(m, text='机器工作', 
             bg='#7C8D7C', 
             width=10,
             font=('楷体',12))
m.add(l)
l1 =tk.Label(m, text='编程区', 
             bg='#9A80CD', 
             width=10,
             font=('楷体',12))
m.add(l1)
# 创建一个垂直方向的panedwindow
# 并添加一个手柄并设置分割线样式
r = tk.PanedWindow(orient=tk.VERTICAL,
                   showhandle=True,
                   sashrelief='sunken')
# 添加到 m中
m.add(r)
# 在 r 中添加两个垂直方向的标签
k =tk. Label(r, text='可以使用鼠标调整各区域', 
             bg='#7181C6', 
             height=6,
             font=('楷体',12))
r.add(k)
b =tk. Label(r, text='Python开发', 
                        bg='#8988CD',
                        font=('楷体',12))
r.add(b)
w.mainloop()

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

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

#LabelFrame 控件示例:
import tkinter as tk
w = tk.Tk()
w.geometry('500x200+710+410')
w.title("工作机器人时代-微信公众平台")
w.iconbitmap('1.ico')
w.resizable(False, False)
# 定义第一个容器,使用 labelanchor ='w' 来设置标题的方位
f = tk.LabelFrame(w, text="销售部",
                  labelanchor="w",
                  bg='#5CA9EE'
                  )
# 使用 place 控制 LabelFrame 的位置
f.place(relx=0.1, rely=0.2, relwidth=0.8, relheight=0.6)
l_1 = tk.Label(f, text="张三")
l_1.place(relx=0.2, rely=0.2)
l_2 = tk.Label(f, text="李四")
l_2.place(relx=0.6, rely=0.2)
l_3 = tk.Label(f, text="王五")
l_3.place(relx=0.2, rely=0.6)
l_4 = tk.Label(f, text="赵六")
l_4.place(relx=0.6, rely=0.6)

w.mainloop()

运行结果如下图:

其属性如下:

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,则窗体将被用作容器使用,一些其他程序也可以被嵌入。


Frame控件
是最常用的控件,可以在主窗口内放置多个 Frame 控件,并且每个 Frame 中还可以嵌套一个或者多个Frame,从而将主窗口界面划分成多个区域。

其用法和属性与LabelFrame控件大同小异,这里就不再累述。

坚持天天学习,每天都能进步一点!!


往期回顾:


本文引用和摘录相关内容,请联系侵删。

- END -


最后,文章有帮助到你的话点赞在看
励我们分享更多的干货!

展开阅读全文

页面更新:2024-04-10

标签:控件   楷体   边框   机器人   详解   组件   布局   方向   窗口   参数   时代   工作

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top