新知榜官方账号
2023-12-01 16:31:42
Tkinter布局管理控件中常用的4个控件:Frame控件、LabelFrame控件、PanedWindow控件、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控件有如下方法:
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
来启用),通过拖动“手柄”图标也可以改变每块区域的大小。下面是一个范例:
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()
运行效果如下:
该控件有如下方法:
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控件的变体,其主要作用也是对控件进行分组处理。下面是一个范例:
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()
运行效果如下:
其属性如下:
bg
:设置背景颜色bd
:边框宽度colormap
:颜色映射cursor
:鼠标在Frame上滑过的样式height/width
:设置Frame的高度和宽度highlightbackground
:当Frame没有获得焦点的时候高亮边框的颜色highlightcolor
:当Frame获得焦点的时候高亮边框的颜色highlightthickness
:指定高亮边框的宽度,默认值是0padx/pady
:距离主窗口在水平/垂直方向上的外边距relief
:指定边框的样式,参数值:'sunken'
,'raised'
,'groove'
或'ridge'
,'flat'
takefocus
:组件是否接受输入焦点container
:参数值为True
,则窗体将被用作容器使用,一些其他程序也可以被嵌入Frame控件是最常用的控件,可以在主窗口内放置多个Frame控件,并且每个Frame中还可以嵌套一个或者多个Frame,从而将主窗口界面划分成多个区域。用法和属性与LabelFrame控件大同小异,这里就不再累述。
相关工具
相关文章
相关快讯
推荐
用Deepseek写AI绘图提示词,像呼吸一样简单!
2025-02-19 16:12
你以为AI绘画是黑科技?其实早成了“路边摊生意”!
2025-02-19 10:15
Flux爆火,全网最全面最详细的Flux使用教程!
2025-02-18 14:19
用AI如何创作音乐,实战教学来啦!
2025-02-17 17:23
MidJourney让你秒变绘画大神,从零开始画哪吒!
2025-02-17 14:56
AI应用新境界:让人工智能成为你的得力助手
2025-02-14 15:45
AI短片革命:当创作遇上智能,人人都能成为导演
2025-02-14 14:53
AI狂潮下的人类职场:是失业危机还是进化契机?
2025-02-13 16:53
开启影视创作新纪元,效率提升 10 倍的神器来了!
2025-02-13 15:11
深度解析DeepSeek:当AI技术照进创作产业的未来
2025-02-12 17:16