二十 五 python自动化办公TKinter界面自动伸缩:基于Frame实现

目录
一、简介
二、基于Frame布局设计
三、Frame下嵌套的Frame自动伸缩,踩坑
四、Frame下嵌套的Text自动伸缩,踩坑
text必须设置=1或True才能自动伸缩
五、设置每个功能的控件布局
五、小结
一、简介
从前一篇下来,有一段时间没有更新了,那是因为在界面自动伸缩中,我遇到了自动伸缩的功能 。本文的目的就是帮助大家如何实现当我们自动拖拉tk窗口时,GUI可以自动伸缩 。

二十 五  python自动化办公TKinter界面自动伸缩:基于Frame实现

文章插图
我们的目的很简单,就是类似实现上面的界面 。
二、基于Frame布局设计
我们的布局思路是先定义主页面,主页面放置菜单,菜单下面依次放置、、...等内容区域,每块内容互相独立称为一个模块,可以单独应用 。
我在项目定义了文件目录结构如下:
我核心的一些功能放在在,而又装载了ht,我每个功能实现都放在ht下面 。
主代码如下:
import tkinter as tkfrom tkinter import *from Top1_CustomFileDialogFrame import Top1_CustomFileDialogFramefrom Top2_ContextFrame importTop2_ContextFramefrom Top3_OperateFrame importTop3_OperateFramefrom 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:
二十 五  python自动化办公TKinter界面自动伸缩:基于Frame实现

文章插图
如下代码设置如下:
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)
五、设置每个功能的控件布局
【二十 五python自动化办公TKinter界面自动伸缩:基于Frame实现】每个Frame功能模块,都是用方法先定义控件,然后引入方法即可使用控件,条例清晰,代码复用率高:
五、小结
官网上说pack调用自动伸缩是,设置=1或=True,即可设置fill=tk.X或fill=tk.Y或fill=tk.BOTH,但是其实不然,这是我踩坑了好久的地方 。