布局管理控件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控件大同小异,这里就不再累述。
坚持天天学习, 每天都能进步一点!!
往期回顾: 来来来,送你一个金牌销售机器人,7X24小时不休,不要工资免费用! RPA技术在旅行社销售业务中如何凤凰涅槃?? 【工资翻三倍】系列:一招搞定九宫图片切割机器人,让你的朋友圈更加炫酷!
本文引用和摘录相关内容,请联系侵删。
- END -
最后,文章有帮助到你的话 【 点赞在看 】
激 励我们分享更多的干货!