tkinter模块布局(frame和grid)


前言

图形用户界面(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(框架)组件是在屏幕上的一个矩形区域,主要是作为其他组件的框架基础,实现在复杂的布局中将其他组件分组或为其他组件提供间距填充。
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
为了理解,我把自己一些问题展现并回答。

  • 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()来告诉容器,我该怎么摆放。所以是控件调用上面函数来实现自己位置摆放。


版权声明:本文为weixin_37645480原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。