python-tkinter-GUI简单化编程之容器控件
- 一、自我介绍、封装及使用方法
- 二、封装容器控件
- 三、封装库的使用
- 四、总结
创作不易,请多包涵支持,谢谢!
一、自我介绍、封装及使用方法
本系列文章将先以封装python的tkinter库为目标进行讲解,后续将会再封装其他python的GUI库。具体可从第一章开始浏览,后续不再阐述。
二、封装容器控件
在第一章python-GUI简单化编程之基础窗口
中我们已经import载入封装的tkinter以及要用的的其他库,并添加了封装基础窗口
、封装顶层窗口
、数据组合框控件
、调整数据组合框控件
、按钮组合框控件
、列表显示框控件
的代码。现在,我们在PythonGui.pyw
再添加以下代码封装容器控件
。接下来将会讲解使用方法,注意不要删除以前的代码。
def A_创建容器控件(放置属性,容器属性):
'''
函数说明:\n\n
放置属性为一个列表,元素的意义分别为: 0.放置的窗口 1.放置于窗口的x绝对坐标(横坐标) 2.放置于窗口的y绝对坐标(纵坐标)\n\n
容器属性为一个列表,元素的意义分别为:0.背景颜色 1.该容器是否带标题(False,True) 2.标题名称
'''
放置窗体 = 放置属性[0]
放置位置 = 放置属性[1:]
背景颜色 = 容器属性[0]
是否带标题 = 容器属性[1]
标题名称 = 容器属性[2]
if 是否带标题:
子窗口 = tk.LabelFrame(放置窗体,bg =背景颜色,height = 1 ,width = 1 ,text = 标题名称)
子窗口.place(x = 放置位置[0],y = 放置位置[1])
return 子窗口
else:
子窗口 = tk.Frame(放置窗体,bg =背景颜色,height = 1 ,width = 1 )
子窗口.place(x = 放置位置[0],y = 放置位置[1])
return 子窗口
调整记录:
(1)2021.03.25 将容器控件的放置方式更改为绝对位置,方便在主窗口上管理这些容器控件。
三、封装库的使用
在test.pyw中添加以下代码准备测试:
import PythonGui as GUI
主窗体 = GUI.A_建立根页面(['测试软件',350,190,'Beige'],'')
测试容器控件1 = GUI.A_创建容器控件([主窗体,10,10],['Beige',False,''])
测试容器控件2 = GUI.A_创建容器控件([主窗体,10,80],['Beige',True,'测试容器控件2'])
测试数据组合框1 = GUI.S_创建数据组合框控件([测试容器控件1,0,0],['测试数据组合框1',True,False,10,12,'Beige'],['int',123,False,''])
测试数据组合框2 = GUI.S_创建数据组合框控件([测试容器控件1,1,0],['测试数据组合框2',True,False,10,12,'Beige'],['int',123,False,''])
测试数据组合框11 = GUI.S_创建数据组合框控件([测试容器控件2,0,0],['测试数据组合框11',True,False,10,12,'Beige'],['int',123,False,''])
测试数据组合框12 = GUI.S_创建数据组合框控件([测试容器控件2,1,0],['测试数据组合框12',True,False,10,12,'Beige'],['int',123,False,''])
主窗体.mainloop()
V_1创建列表显示框控件()
函数中有三个形参:0.放置属性 1.容器属性
(1)放置属性为一个列表,元素的意义分别为: 0.放置的窗口 1.放置于窗口的x绝对坐标(横坐标) 2.放置于窗口的y绝对坐标(纵坐标)
(2)容器属性为一个列表,元素的意义分别为:0.背景颜色 1.该容器是否带标题(False,True) 2.标题名称。
运行上述代码,可在主窗口上生成两个个容器框控件和四个数据组合框控件。其中一个容器控件放置在主窗体
坐标的x=10,y=10的位置处,背景颜色为'Beige'
,没有标题;另外一个容器控件放置在主窗体
坐标的x=10,y=80的位置处,背景颜色为'Beige'
,标题为'测试容器控件2'
。而测试数据组合框1
和测试数据组合框2
,放置于测试容器控件1
这个容器控件
,测试数据组合框11
和测试数据组合框12
,放置于测试容器控件2
这个容器控件
。使用容器控件的目的在于将创建的控件规整化,便于控件管理,在一定程度上避免了所有控件挤在一个主窗口上的麻烦。
请注意,放置属性中的坐标为主窗口的绝对位置坐标值,若你选择了100,200,那就是放置在主窗口的x=100,y=200的位置。
四、总结
若有建议之处,麻烦在评论区指出,共同进步,谢谢。ps:平常加班较多,我会抽空余时间更新后面章节。