python自动化办公(二十 五)TKinter界面自动伸缩:基于Frame实现
目录
一、简介
二、基于Frame布局设计
四、Frame下嵌套的Text自动伸缩,踩坑
text必须设置=1或True才能自动伸缩
五、设置每个功能的控件布局
五、小结
一、简介
从前一篇下来,有一段时间没有更新了,那是因为在界面自动伸缩中,我遇到了自动伸缩的功能。本文的目的就是帮助大家如何实现当我们自动拖拉tk窗口时,GUI可以自动伸缩。
我们的目的很简单,就是类似实现上面的界面。
二、基于Frame布局设计
我们的布局思路是先定义主页面,主页面放置菜单,菜单下面依次放置、、...等内容区域,每块内容互相独立称为一个模块,可以单独应用。
我在项目定义了文件目录结构如下:
我核心的一些功能放在在,而又装载了ht,我每个功能实现都放在ht下面。
主代码如下:
import tkinter as tk
from tkinter import *
from Top1_CustomFileDialogFrame import Top1_CustomFileDialogFrame
from Top2_ContextFrame import Top2_ContextFrame
from Top3_OperateFrame import Top3_OperateFrame
from CustomMenuFrame import CustomMenuFrame
# 定义全局变量
# rightframe = None
#
# def loadCustomFrame3():
# # 修改全局变量,只有这样才能修改全局变量
# global rightframe
# # 不能使用 rightframe.frame.destroy方法,请自己验证一下
# rightframe.frame.destroy()
# rightframe = Top2_ContextFrame(master)
# master.update()master = tk.Tk()
master.geometry("1200x900")
master.title("Tkinter")
# 定义菜单
customMenuFrame = CustomMenuFrame(master)
top1_CustomFileDialogFrame = Top1_CustomFileDialogFrame(master)
top2_ContextFrame = Top2_ContextFrame(master)
top3_OperateFrame = Top3_OperateFrame(master)
print("启动完成")
master.mainloop()
三、Frame下嵌套的Frame自动伸缩,踩坑
我们把顶部()设置沿X轴方向拉伸,注意一定不要添加属性=True:
如下代码设置如下:
self.frame.pack(padx=5, pady=0, side=tk.TOP, expand=True, fill=tk.X)
那么拉伸效果变成如下,并不是我们想要的效果:
四、Frame下嵌套的Text自动伸缩,踩坑 text必须设置=1或True才能自动伸缩
text.pack(expand=1, fill=tk.X, pady=5, side=LEFT)
五、设置每个功能的控件布局
每个Frame功能模块,都是用方法先定义控件,然后引入方法即可使用控件,条例清晰,代码复用率高:
五、小结
官网上说pack调用自动伸缩是,设置=1或=True,即可设置fill=tk.X或fill=tk.Y或fill=tk.BOTH,但是其实不然,这是我踩坑了好久的地方。