Python Tkinter教程(三)——三种几何布局管理器Pack、Place和Grid的所有参数及相关方法及详细用法

简介: Python Tkinter教程(三)——三种几何布局管理器Pack、Place和Grid的所有参数及相关方法及详细用法

一、Pack方法

【Pack方法官方原文:pack manual page - Tk Built-In Commands

【参数说明】f198d7cc86d8487fa240cedc481d7689.pngimage.png【1】如果容器窗口太大,以至于在其所有内容pack后会留下额外的空间,那么额外的空间将均匀分布在为其设置了-expand选项的所有内容中。

【相关方法】image.png【几何传播】Pack通常会计算一个容器控件(如Frame控件)必须有多大才能完全满足其内容物的需要,并将容器控件的宽度和高度设置为这些尺寸。这会导致几何信息通过窗口层次向上传播到顶层窗口(Toplevel类型的控件),以便整个子树自行调整大小以满足叶窗口的需要。但是,pack_propagate命令可用于关闭一个或多个容器控件的传播。如果传播被禁用,则Pack几何布局管理器将不会设置pack所需的宽度和高度。例如,如果希望容器控件具有指定的固定大小,这可能很有用。


【这里推荐一篇写的很好的关于Pack的文章】


用tkinter.pack设计复杂界面布局_快乐清风客的博客-CSDN博客_tkinter界面设计


【代码示例】

from tkinter import *
root = Tk()
root.title('Pack方法')
root.geometry('600x600+300+100')
Frame(root,bg='red',width=100).pack(side='left',fill='y',expand='no')
Frame(root,bg='yellow',height=100).pack(side='top',fill='x')
Frame(root,bg='green').pack(expand=1,fill='both')
root.mainloop()

【运行效果】

二、Place方法

【Place方法官方原文:place manual page - Built-In Commands

【参数说明】

image.png【1】该参数不常用,要参考的可以看一下官方说明:


(我就不翻译了,嘻嘻,主要是没看太懂,有懂的可以在评论区说一下哦!)


-bordermode mode


whether to take border width of master widget into account


Mode determines the degree to which borders within the container are used in determining the placement of the content. The default and most common value is inside. In this case the placer considers the area of the container to be the innermost area of the container, inside any border: an option of -x 0 corresponds to an x-coordinate just inside the border and an option of -relwidth 1.0 means window will fill the area inside the container's border.


If mode is outside then the placer considers the area of the container to include its border; this mode is typically used when placing window outside its container, as with the options -x 0 -y 0 -anchor ne. Lastly, mode may be specified as ignore, in which case borders are ignored: the area of the container is considered to be its official X area, which includes any internal border but no external border. A bordermode of ignore is probably not very useful.

【相关方法】image.png【代码示例】

from tkinter import *
root = Tk()
root.title('Place方法')
root.geometry('600x600+300+100')
Frame(root,bg='red').place(width=450,height=150)
Frame(root,bg='yellow').place(width=150,height=450,x=450)
Frame(root,bg='blue').place(width=450,height=150,x=150,y=450)
Frame(root,bg='green').place(width=150,height=450,y=150)
root.mainloop()

【运行效果】

三、Grid方法

【Grid方法官方原文:grid manual page - Tk Built-In Commands

【参数说明】

image.png

【相关方法】image.pngimage.png【代码示例】

from tkinter import *
root = Tk()
root.title('Grid方法')
root.geometry('600x600+300+100')
Frame(root,bg='red',width=300,height=300).grid(column=0,row=0)
Frame(root,bg='yellow',width=300,height=300).grid(column=0,row=1)
Frame(root,bg='blue',width=300,height=300).grid(column=1,row=0)
Frame(root,bg='green',width=300,height=300).grid(column=1,row=1)
root.mainloop()

【运行效果】


【总结一下】

Pack方法比较简单,可以解决不是非常复杂的图形化界面,但是它只能单一地放置,对于网格化的图形化界面,用Pack就比较繁琐;


Place方法十分精确,它要求了很多参数,能够轻松胜任复杂的图形化界面,但是缺陷也很明显,窗口放大或缩小,Place管理的控件并不能随之改变大小及位置;


Grid方法就是网格,字面意思嘛,它能够很好地应付网格化的图形化界面,但对于复杂且规律不明显的界面而言,Grid方法就显得不太行了;


各有各的优缺点,对于不同的程序我们应该选用合适的几何布局管理器,但是给个小建议,尽量不要在同一个程序中使用不同的几何布局管理器,那样容易把自己弄晕,且代码看起来不清晰。我呢,就比较喜欢用Place了,精确控制控件的大小及位置不就和我们小时候搭积木一样吗?简单容易,就是这个位置坐标有点“费头发”......

目录
相关文章
|
8天前
|
Linux 网络安全 Python
linux centos上安装python3.11.x详细完整教程
这篇文章提供了在CentOS系统上安装Python 3.11.x版本的详细步骤,包括下载、解压、安装依赖、编译配置、解决常见错误以及版本验证。
60 1
linux centos上安装python3.11.x详细完整教程
|
6天前
|
Python Windows
python入门保姆级教程 | 13
python入门保姆级教程 | 13
|
9天前
|
存储 JSON API
实战派教程!Python Web开发中RESTful API的设计哲学与实现技巧,一网打尽!
在数字化时代,Web API成为连接前后端及构建复杂应用的关键。RESTful API因简洁直观而广受欢迎。本文通过实战案例,介绍Python Web开发中的RESTful API设计哲学与技巧,包括使用Flask框架构建一个图书管理系统的API,涵盖资源定义、请求响应设计及实现示例。通过准确使用HTTP状态码、版本控制、错误处理及文档化等技巧,帮助你深入理解RESTful API的设计与实现。希望本文能助力你的API设计之旅。
30 3
|
10天前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
在Web开发中,安全至关重要,尤其要警惕SQL注入和XSS攻击。SQL注入通过在数据库查询中插入恶意代码来窃取或篡改数据,而XSS攻击则通过注入恶意脚本来窃取用户敏感信息。本文将带你深入了解这两种威胁,并提供Python实战技巧,包括使用参数化查询和ORM框架防御SQL注入,以及利用模板引擎自动转义和内容安全策略(CSP)防范XSS攻击。通过掌握这些方法,你将能够更加自信地应对Web安全挑战,确保应用程序的安全性。
38 3
|
11天前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
44 1
|
4天前
|
机器学习/深度学习 PyTorch TensorFlow
Python实现深度学习学习率指数衰减的方法与参数介绍
学习率指数衰减提供了一种高效的动态调整学习率的手段,帮助模型在不同训练阶段以不同的学习速度优化,有利于提升模型性能和训练效率。通过合理设置衰减策略中的参数,可以有效地控制学习率的衰减过程,实现更加精确的模型训练调优。
6 0
|
8天前
|
IDE 开发工具 Python
python3代码编程规范(命名、空格、注释、代码布局、编程建议等)
该文章详细介绍了Python3的编程规范,包括命名、空格使用、注释、代码布局等方面的最佳实践,帮助提升代码的可读性和一致性。
12 0
|
5月前
|
存储 Python
Python函数参数传递
Python函数参数传递
55 1
|
C++ Python
Python函数参数传递:传值还是传引用
Python函数参数传递:传值还是传引用
54 0
|
12月前
|
Python
python之函数的参数传递(引用传递和值传递),查看变量的内存地址的方法
python之函数的参数传递(引用传递和值传递),查看变量的内存地址的方法
下一篇
无影云桌面