带你走进 @ 机器人时代
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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号