Python GUI编程(Tkinter框架)
1|0 1.Tkinter是什么?
Tkinter是Python的标准GUI(图形用户界面)库,它是Python的Tcl/Tk GUI工具包的包装器。Tkinter允许Python程序员快速创建GUI应用程序,而无需深入了解底层的图形绘制细节。
2|02.安装Tkinter
Tkinter通常已经预装在Python中,所以不需要额外安装。你可以在Python环境中直接导入它:
不过,在某些 Linux 发行版中,可能需要安装单独的 Tk 开发包。例如在 Ubuntu 系统中,可以使用以下命令安装:
3|03.基础概念
首先,了解Tkinter的基本概念,包括窗口(Window)、组件(Widgets)、事件(Events)和布局管理器(Layout Managers)。
3|1主窗口
在Tkinter中,所有的组件和控件都是从主窗口派生的。主窗口是应用程序的最顶层窗口,所有的其他窗口和控件都是这个窗口的子元素。
3|2组件
组件是Tkinter中用于构建用户界面的基本元素,比如按钮(Button)、标签(Label)、文本框(Entry)等。每个组件都是tkinter.Widget
类的一个实例。(注:tkinter.Widget
是 Tkinter 库中的一个基类,它是所有 Tkinter 控件(组件)的父类。在 Tkinter 中,几乎所有的 GUI 控件都是 Widget
类的子类。Widget
类提供了所有控件共有的基本属性和方法,比如配置控件的属性、绑定事件等。)
3|3事件
事件是用户与界面交互的结果,比如点击按钮、移动鼠标、按下键盘等。Tkinter允许你为这些事件编写回调函数,当事件发生时,这些函数会被调用。
3|4布局管理器
Tkinter提供了几种布局管理器,用于自动管理组件的位置和大小。主要有三种布局管理器:
pack():最简单的布局管理器,按照组件添加的顺序进行排列。
grid():允许你以表格的形式放置组件,指定行和列。
place():允许你精确指定组件的位置(x, y坐标)。
4|04.创建第一个窗口
5|05.添加组件
附:创建按钮代码解释
6|06.Tkinter 组件介绍
Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。
6|1Tkinter控件表(表格来源:Python GUI 编程(Tkinter) | 菜鸟教程)
控件 | 描述 |
---|---|
Button | 按钮控件;在程序中显示按钮。 |
Canvas | 画布控件;显示图形元素如线条或文本 |
Checkbutton | 多选框控件;用于在程序中提供多项选择框 |
Entry | 输入控件;用于显示简单的文本内容 |
Frame | 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 |
Label | 标签控件;可以显示文本和位图 |
Listbox | 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 |
Menubutton | 菜单按钮控件,用于显示菜单项。 |
Menu | 菜单控件;显示菜单栏,下拉菜单和弹出菜单 |
Message | 消息控件;用来显示多行文本,与label比较类似 |
Radiobutton | 单选按钮控件;显示一个单选的按钮状态 |
Scale | 范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
Scrollbar | 滚动条控件,当内容超过可视化区域时使用,如列表框。. |
Text | 文本控件;用于显示多行文本 |
Toplevel | 容器控件;用来提供一个单独的对话框,和Frame比较类似 |
Spinbox | 输入控件;与Entry类似,但是可以指定输入范围值 |
PanedWindow | PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。 |
LabelFrame | labelframe 是一个简单的容器控件。常用于复杂的窗口布局。 |
tkMessageBox | 用于显示你应用程序的消息框。 |
6|2Button(按钮)
功能:按钮是一种可交互组件,用户点击按钮时能触发指定的操作,常用于执行特定功能,比如提交表单、确认操作等。
说明:在上述代码中,tk.Button()
用于创建按钮对象。text
参数设定了按钮上显示的文本内容,command
参数则绑定了一个函数(这里是 button_click
函数),意味着当按钮被点击时,就会执行这个绑定的函数。最后通过 button.pack()
将按钮添加到窗口中,利用 pack()
布局管理器按照默认顺序排列组件。
6|3Entry(输入框)
功能:允许用户输入单行文本内容,常用于收集如用户名、简单搜索关键词等简短的用户输入信息。
示例:
说明:代码里首先用 tk.Entry()
创建了输入框对象。之后定义了 get_input
函数,在函数中通过 entry.get()
方法来获取用户在输入框里输入的文本内容。添加一个按钮用于触发获取输入内容的操作,同样借助 pack()
布局管理器把输入框和按钮添加到窗口中,方便用户操作与查看。
6|4Text(文本框)
功能:提供一个多行的文本编辑区域,用户可以在其中输入、编辑以及查看较多数量的文本,例如编写文章、记录笔记等场景适用。
示例:
说明:通过 tk.Text()
创建了文本框对象,随后使用 text_box.pack()
把文本框添加到主窗口 root
中。用户在文本框里能够自由地输入多行文本,并且可以利用文本框自带的一些编辑功能(比如光标移动、选中文本等)进行文本的编辑操作。
6|5Checkbutton(复选框)
功能:让用户能够从多个选项里选择一个或多个选项,常用于需要用户选择多项配置、偏好等情况,每个选项有选中和未选中两种状态。
示例:
说明:先定义了 tk.IntVar()
类型的变量 var1
,用于和复选框关联起来记录其状态(选中时 var1
的值为 1,未选中时为 0)。然后使用 tk.Checkbutton()
创建复选框对象,text
参数设置复选框旁边显示的文本,variable
参数指定关联的变量。最后通过 check_button1.pack()
把复选框添加到窗口中,方便用户进行选择操作。
6|6Radiobutton(单选按钮)
功能:用于在一组互斥的选项中选择唯一的一个选项,比如选择性别、选择一种支付方式等场景下使用。
示例:
说明:先是创建了 tk.IntVar()
类型的变量 var
,同一组的单选按钮都共享这个变量来记录被选中按钮的值。接着用 tk.Radiobutton()
分别创建两个单选按钮对象,对于每个单选按钮,text
参数设置旁边显示的文本,variable
参数关联共享变量 var
,value
参数设定该按钮被选中时赋予变量 var
的值。通过 pack()
布局管理器把单选按钮添加到窗口中,用户只能选择其中一个选项。
6|7Listbox(列表框)
功能:展示一个项目列表,用户可以从中选择一个或多个项目,常用于呈现可供选择的多个数据项,像文件列表、商品列表等。
示例:
说明:通过 tk.Listbox()
创建列表框对象后,定义了一个包含若干选项的列表 items
,接着利用循环和 listbox.insert(tk.END, item)
方法将每个选项依次插入到列表框中,最后使用 listbox.pack()
把列表框添加到窗口中,用户就能从中选择相应的项目了。
6|8Scale(滑块)
功能:用户可以通过拖动滑块来选择一个数值,常用于调节连续变化的参数,例如音量大小、图像亮度等设置场景。
示例:
说明:利用 tk.Scale()
创建滑块对象,from_
和 to
参数规定了滑块取值的范围,orient
参数指定滑块的方向(这里是 tk.HORIZONTAL
表示水平方向)。之后通过 scale.pack()
把滑块添加到窗口中,用户通过拖动滑块就能获取相应的数值,并且可以在程序中通过 scale.get()
方法获取滑块当前所代表的值。
6|9Spinbox(微调框)
功能:类似带有上下箭头的输入框,用户可以点击箭头或者手动输入来选择一个数值,常应用于选择有限范围内的整数值或者特定的几个字符串值,比如选择年龄范围、选择预设的城市名称等。
示例:
说明:使用 tk.Spinbox()
创建微调框对象,from_
和 to
参数定义了微调框的取值范围,用户既可以点击上下箭头按一定增量(默认是 1)改变数值,也可以手动输入符合要求的值。最后通过 spinbox.pack()
把微调框添加到窗口中,方便用户进行数值选择操作。
6|10Menu(菜单)
功能:用于创建菜单栏以及下拉菜单,将多个相关的命令集合在一起,方便用户操作,常见于各种软件应用的顶部菜单栏等位置。
示例:
说明:首先创建 tk.Menu()
类型的菜单栏对象 menu_bar
,接着创建文件下拉菜单对象 file_menu
并设置其不可分离(通过 tearoff=0
)。然后利用 add_command()
方法向文件下拉菜单中添加具体的命令选项(如 “打开”、“保存”),再通过 add_cascade()
方法把文件下拉菜单添加到菜单栏里,最后通过 root.config(menu=menu_bar)
将整个菜单栏配置到根窗口 root
上,用户点击菜单栏的标签就能展开下拉菜单并选择相应命令。
6|11Canvas(画布)
功能:提供一个绘图区域,可以在上面绘制各种图形(如直线、矩形、圆形、多边形等),还能用于展示图像、实现简单动画等复杂的可视化操作。
示例:
说明:通过 tk.Canvas()
创建画布对象,设定好宽度和高度参数后,利用 canvas.pack()
把画布添加到窗口中。之后使用 canvas.create_rectangle()
这类 create_xxx()
系列方法(这里绘制矩形,不同图形有对应的创建方法)在画布上绘制相应的图形,并且后续还可以通过其他方法(如修改图形属性等)对绘制的图形做进一步操作。
7|07.布局管理
7|1pack 布局
pack()
是一种简单的布局方式。它会按照组件添加的顺序将组件排列在窗口中。可以通过一些参数来调整布局,比如 side
参数可以设置组件排列的方向(top
、bottom
、left
、right
)。
示例:
这个例子中,两个按钮会从左到右排列。
7|2grid 布局
grid()
布局是按照表格的形式来排列组件的。通过指定行和列的位置来放置组件。
示例:
在这个例子中,通过grid()方法将标签和输入框按照表格的形式排列,形成了一个简单的表单界面。
7|3place 布局
place()
布局可以通过指定组件的绝对位置(x
、y
坐标)或者相对位置来放置组件。不过这种布局方式不太灵活,当窗口大小改变时,组件的位置可能不会自适应。
示例:
这里的按钮会出现在距离窗口左上角(x=50,y=50)的位置。
8|08.事件处理
除了前面介绍的按钮点击事件,Tkinter 还可以处理很多其他事件,如鼠标移动、键盘按键等。
例如,处理鼠标进入和离开组件的事件:
在这个例子中,通过 bind()
方法将事件和对应的处理函数绑定起来。<Enter>
表示鼠标进入组件的事件,<Leave>
表示鼠标离开组件的事件。当这些事件发生时,会分别执行 enter()
和 leave()
函数。
9|09.结语
学习 Tkinter 需要不断地实践和尝试不同的组件组合、布局方式和事件处理方法,通过编写一些简单的图形界面程序,如计算器、简单的文本编辑器等来加深理解。同时,也可以参考 Tkinter 的官方文档获取更详细的信息。
Python的官方 Tkinter文档:
tkinter — Python interface to Tcl/Tk — Python 3.13.1 documentation
__EOF__

本文链接:https://www.cnblogs.com/chunyublog/p/18659581.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了