Tkinter 转载 (来自C语言中文网)

一个最简单的Tkinter程序至少应包含以下4个部分:

导入tkinter模块、创建主窗口、也称root窗口(即根窗口)、添加人机交互控件,同时编写相应的事件函数、通过主循环(mainloop)来显示主窗口。

以上:只有"添加人机交互控件"这个步骤属于Tkinter编程的重点,其余三个步骤属于固定的代码格式,如下:

程序运行结果:

如上图,这个是最简单的GUI程序对应的主窗口,其他的控件都要建立在主窗口之上。

添加一些简单的交互控件(Eg:文本or按钮),代码如下所示:

程序运行结果如下:

以上程序中,添加了一行文本"C语言中文网,欢迎您。"此处使用了Lable控件来实现,需要注意的是,当成功创建标签(文本)对象后,必须使用pack方法将其放置在主窗口内(pack方法又称窗口布局管理器)。

添加按钮的逻辑与添加文本标签类似,值得注意的是,按钮控件通过command参数实现"关闭窗口"功能,代码如下:

设置宽高时,只能使用"x"不能使用"*"

Protocol协议处理机制:

Tkinter除了提供事件绑定机制之外,还提供了协议处理机制,它指的是应用程序和窗口管理器之间的交互,最常用的协议为WM_DELETE_WINDOW,当Tkinter使用WM_DELETE_WINDOW协议与主窗口进行交互时,Tkinter主窗口右上角x号的关闭功能失效,也就是无法通过点击x来关闭窗口,而是转变成调用用户自定义的函数。

设置窗的位置:

当我们运行Tkinter程序时,主窗口都会出现在距离屏幕左上角指定的位置上,这是由Tkinter软件包默认设置的。但在许多情况下,我们需要根据实际情况来移动窗口再电脑屏幕上的位置,通过窗口对象geometry()方法即可改变主窗口的位置,语法格式如下:

上述代码表示,设置主窗口的宽度为 450,高度为 400,同时窗口距离左边屏幕的距离为 300(以像素为单位),距离屏幕顶部的距离为 200,这里我们将带"+"的参数值称为"位置参数",当然,您也可以将它们设置为负数,如下所示:

当设置了一个超过屏幕的负参数值时,主窗口会被移动至"屏幕之外",此时就看不到主窗口了,这也是隐藏窗口的一种方法。

Label控件构成:

一个控件主要由背景和前景两部分组成。其中背景由三部分构成分别是内容区域、填充区、边框,这三个区域的大小通过以下属性进行控制,如下所示:width/height、padx/pady、borderwidth

边框的宽度可以通过 borderwidth 来调整,其样式可以通过relief来设置(默认为平的 flat);填充区的大小调整分为水平方向和垂直方向,可以使用padx和pady来调整;内容区则主要用来显示文字或者图片,其大小由 width/height 来控制。

标签添加背景图

Label(标签)除了可以显示文本之外,还可以用来显示图片,通过一组示例做简单的说明,代码如下所示:

注意:不同的 TK 版本所支持的图片格式也不完全相同,通过对上述示例的测试,此处只支持显示 GIF 格式的图片。

按钮控件Button的使用流程:通过command参数回调函数。自定义一个函数或者方法,将函数与按钮关联起来,最后当用户按下这个按钮时,Tkinter就会自动调用相关函数。

使用流程:

扩展:按钮的布局

按钮在主窗口中的布局,通常使用grid()函数来完成,该函数以网络状的形式(行和列)来管理窗口布局。

grid() 布局管理器提供了一个sticky参数,通过该参数可以设置按钮的方位,该参数默认将控件设置居中,其他参数值有 N/S/W/E(上/下/左/右),而且可以组合在一起使用,比如 NW/WE/SE/SW/NE 等,这与anchor参数控制文本的显示位置,有着异曲同工之妙。如下图所示:

值得大家注意的是: grid() 布局方法不能与 pack() 混合在一起使用,相关知识在后续内容中还会做针对性讲解。

相关推荐
天空属于哈夫克31 分钟前
非官方接口下,基于RPA实现企业微信外部群主动调用的技术实践
microsoft·企业微信·rpa
weixin_462446232 分钟前
【原创实践】Windows 和 Linux 下使用 Python 3.10 搭建 PaddleOCRVL 识别图片并100%还原表格
linux·windows·python·飞浆
人工智能训练1 小时前
UE5中如何解决角色网格体“掉下去”的问题
运维·服务器·windows·容器·ue5
唐宋元明清21888 小时前
.NET 磁盘管理-技术方案选型
windows·c#·存储
桌面运维家9 小时前
vDisk VOI/IDV Windows本地运行异常怎么办?快速排查恢复
windows
2501_9254355217 小时前
怎么彻底禁止Windows更新?一键彻底关闭win11自动更新的工具
windows
dust_and_stars20 小时前
ubuntu24使用apt安装VS-code-server code-server
linux·服务器·windows
郑泰科技20 小时前
快速地图匹配(FMM)在轨迹可视化中的核心应用
windows·python·交通物流
梦星辰.20 小时前
超大 JSONL 数据集交互式查看器 Linux便捷工具
linux·windows·microsoft
取个名字太难了a21 小时前
插入APC
windows