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

相关推荐
Bruce_Liuxiaowei4 小时前
Windows系统错误6118全面解决方案:修复此工作组的服务器列表当前无法使用
运维·服务器·windows·网络安全
水饺编程5 小时前
第3章,[标签 Win32] :窗口类03,窗口过程函数字段
c语言·c++·windows·visual studio
一苓二肆5 小时前
代码加密技术
linux·windows·python·spring·eclipse
LinXunFeng5 小时前
如何舒适地沉浸式编程,这是我的答案
windows·程序员·mac
初听于你7 小时前
深入了解—揭秘计算机底层奥秘
windows·tcp/ip·计算机网络·面试·架构·电脑·vim
IoT小趴菜9 小时前
操作无法完成,因为磁盘管理控制台视图不是最新状态。请使用刷新任务刷新此视图。如果问题仍然存在,请关闭磁盘管理控制台,然后重新启动磁盘管理或重新启动计算机
windows·存储
x_feng_x11 小时前
Java从入门到精通 - 集合框架(二)
java·开发语言·windows
小薛引路12 小时前
office便捷办公06:根据相似度去掉excel中的重复行
windows·python·excel
黑马金牌编程12 小时前
Jenkins的Linux与window部署方式
linux·运维·windows·jenkins·持续集成·cicd
欢璃13 小时前
修电脑日志--电脑开机黑屏只有光标闪
windows·安全·电脑·安全架构