前言
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
python提供tkinter模块来实现用户界面,这里不对thinter详细展开,而是通过tkinter演示如何实现用户界面设计。
一、关于python内置模块学习思考
学习由浅入深,为了学习tkinter我看了很多CSDN资料,我发现tkinter知识非常零散,CSDN并不是规范学习的学习路径,他能提供的是一些零散的问题和具体例子,入门是可以,但是深入研究就必须从官方网站上了解。https://www.python.org/
英文不好也没关系,谷歌浏览器由自动翻译,尽管翻译也是惨不忍睹。
1、阅读python创造者们的写教程才能更好理解。
2、自己编写代码上机演练。
3、有问题直接在CSDN搜答案,实在不行直接问这些博主,榨取他们剩余价值。
二、Frame组件
我们常见的GUI像我们的操作系统,软件、网页。我们可以看到通常做法是按照根容器放置容器(如Frame组件),容器里放置一堆控件(lable,button,entry等等),最后他们共同组成一个完整界面。
规范的说法:Frame(框架)组件是在屏幕上的一个矩形区域,主要是作为其他组件的框架基础,实现在复杂的布局中将其他组件分组或为其他组件提供间距填充。
为了理解,我把自己一些问题展现并回答。
- 1、根容器可不可以直接放置控件?
- 可以,不过复杂界面设计还要使用次级容器frame,实现相互间隔离,更规范整个界面设计。你想想房子为什么隔出怎么多房间隔离。
- 2、什么是布局,布局是通过什么方式实现的?
- python提供了pick()、grid()、place()三个方法(一个容器内不可混用)来实现布局就是摆放问题。由控件告诉容器摆放的位置。
三、布局(grid)
1、gird()的参数

这是官方网站,谷歌浏览器翻译过来。
https://tkdocs.com/shipman/grid.html
2、演示程序
基本框架说明一下:
第一步:引入模块
from tkinter import *
第二步:创建父容器(根容器)就是类似毛胚房或者汽车的底盘。
root = Tk()
第三步:基本图形大小
root.geometry(‘800x600’)
第四步:创建子容器或者控件
第五步:布局
第六步:事件和事件的调用(这里没用上)
第七步:启动容器
root.mainloop()
主体是第一、二、三、七语句照抄就好,其他就要自己来补充了。
from tkinter import *
# 从 tkinter文件 导入所有
root = Tk() #TK()创建父容器(根容器)。
root.geometry('800x600')#x是字母不是乘号
# 创建容器frame,frame基本参数
# width : frame组件的宽度
# height : frame组件的高度
# padx : frame的X方向的内边距
# pady : frame的Y方向的内边距
top_Frame = Frame(root
, width=750
, height=80
, highlightbackground="black"
, highlightthickness=1
, bd=3)
left_Frame = Frame(root
, width=200
, height=400
, highlightbackground="black"
, highlightthickness=1
, bd=3)
main_Frame = Frame(root
, width=335
, height=400
, highlightbackground="black"
, highlightthickness=1
, bd=3)
right_Frame = Frame(root
, width=200
, height=400
, highlightbackground="black"
, highlightthickness=1
, bd=3)
bottom_Frame = Frame(root
, width=750
, height=80
, highlightbackground="black"
, highlightthickness=1
, bd=3)
top_Frame.grid(row=0, column=0, columnspan=3, padx=5, pady=5)
left_Frame.grid(row=1, column=0, padx=5, pady=5)
main_Frame.grid(row=1, column=1, padx=5, pady=5)
right_Frame.grid(row=1, column=2, padx=5, pady=5)
bottom_Frame.grid(row=2, column=0, columnspan=3, padx=5, pady=5)
root.mainloop()
运行结果
tkinter的grid布局定位方式图示详解
参考博主五笔打字通的文章,内容很详实,我就不再原创了。
关于容器和控件分工的思考
每个控件创建第一个参数是容器,就是说控件初始化过程把自己拼装到容器,而不是容器内增加一个控件。
1、这样的组合关系保证控件不受限容器,控件类还可以扩展。
2、布局不是容器来决定,而是控件或者次级容器通过pack()、grid()、place()来告诉容器,我该怎么摆放。所以是控件调用上面函数来实现自己位置摆放。