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() 混合在一起使用,相关知识在后续内容中还会做针对性讲解。

相关推荐
Elastic 中国社区官方博客2 小时前
使用 Elastic AI Assistant for Search 和 Azure OpenAI 实现从 0 到 60 的转变
大数据·人工智能·elasticsearch·microsoft·搜索引擎·ai·azure
n***85946 小时前
嵌入式 UI 开发的开源项目推荐
windows·开源·开源软件
小袁搬码7 小时前
Windows中指定路径安装DockerDesktop
windows·docker·容器·docker desktop
A_cot12 小时前
理解设计模式与 UML 类图:构建稳健软件架构的基石
microsoft·设计模式·简单工厂模式·工厂方法模式·uml
系统之家装机大师15 小时前
Win11 22H2/23H2系统11月可选更新KB5046732发布!
windows·电脑
系统之家装机大师15 小时前
微软发布Win11 24H2系统11月可选更新KB5046740!
windows·电脑
C-cat.15 小时前
Linux|进程程序替换
linux·服务器·microsoft
戎梓漩17 小时前
windows下安装curl,并集成到visual studio
ide·windows·visual studio
Smartdaili China18 小时前
如何在 Microsoft Edge 中设置代理: 快速而简单的方法
前端·爬虫·安全·microsoft·edge·社交·动态住宅代理
蓝田~19 小时前
观察者模式和订阅模式
windows·观察者模式