首页 >> 大全

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

2023-10-14 大全 35 作者:考证青年

目录

一、简介

二、基于Frame布局设计

三、Frame下嵌套的Frame自动伸缩,踩坑

四、Frame下嵌套的Text自动伸缩,踩坑

text必须设置=1或True才能自动伸缩

五、设置每个功能的控件布局

五、小结

一、简介

从前一篇下来,有一段时间没有更新了,那是因为在界面自动伸缩中,我遇到了自动伸缩的功能。本文的目的就是帮助大家如何实现当我们自动拖拉tk窗口时,GUI可以自动伸缩。

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

我们的目的很简单,就是类似实现上面的界面。

二、基于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:

_python自动化办公(二十 五)TKinter界面自动伸缩:基于Frame实现_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)

五、设置每个功能的控件布局

每个Frame功能模块,都是用方法先定义控件,然后引入方法即可使用控件,条例清晰,代码复用率高:

五、小结

官网上说pack调用自动伸缩是,设置=1或=True,即可设置fill=tk.X或fill=tk.Y或fill=tk.BOTH,但是其实不然,这是我踩坑了好久的地方。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了