时不时就有 b 友让我整点

“Python GUI 相关的教程”

今天小编就来给你说道说道


用 Python 来写 GUI 的库有好几个

比如 pyqt、wxpython、tkinter、kivy

相对来说比较常用的是 tkinter它是 Python 内置的库用起来比较 “直接了当”

是这样的

TK 是一个开源的开发工具包里面提供了很多界面组件的接口比如按钮、选项框、输入框这些

而且这些组件是跨平台的在不同的操作系统中都可以运行比如你常见的 MacOS,Linux,Windows


python 获取android屏幕图像 python 获取屏幕大小_Python 如何添加新列


既然如此

Python 就把这些接口调起来封装成函数和类然后整成 tkinter 模块

这样当我们想要写 GUI 的时候直接使用 Python 调用 tkinter 就好了


python 获取android屏幕图像 python 获取屏幕大小_python 依据某几列累加求和_02


在你的终端里面输入“python -m tkinter”


python 获取android屏幕图像 python 获取屏幕大小_python标题的位置_03


出现类似的窗口说明你的 tkinter 和 tk 都给安装上了

那么如何玩 tkinter 呢

接下来就是学习 Python 的正确姿势


python 获取android屏幕图像 python 获取屏幕大小_Python_04

组件的使用

我先把一些常用的组件操作给你介绍一下

首先我们导入 tkinter

然后调用 Tk 方法


python 获取android屏幕图像 python 获取屏幕大小_Python_05


运行就可以得到一个窗口


python 获取android屏幕图像 python 获取屏幕大小_Python 如何添加新列_06


样式与你的系统类型相关

其中我们调用了 mainloop 方法

主要是让它去循环等待用户的交互

定义窗口的标题


python 获取android屏幕图像 python 获取屏幕大小_python标题的位置_07


样式与你的系统类型相关

其中我们调用了 mainloop 方法

主要是让它去循环等待用户的交互

定义窗口的标题


python 获取android屏幕图像 python 获取屏幕大小_python标题的位置_07


窗口的高宽是根据组件的大小相对而定的

这样能在不同的系统中比较好的运行

当然,你也可以

使用 geometry自己指定窗口的宽高


python 获取android屏幕图像 python 获取屏幕大小_Python_09


tkinter 把不同的组件

都封装成了 Class

比如想要往里加入文本

就可以使用 Label 对


python 获取android屏幕图像 python 获取屏幕大小_python标题的位置_10


这里创建了一个 Label 小组件

然后用 pack 塞到窗口中去

每个组件都有一些属性可以设置

比如这里可以设置常用的宽高字体颜色


python 获取android屏幕图像 python 获取屏幕大小_python 依据某几列累加求和_11


加个骚骚的按钮


python 获取android屏幕图像 python 获取屏幕大小_python标题的位置_12


python 获取android屏幕图像 python 获取屏幕大小_Python 如何添加新列_13


按钮可以定义点击事件

比如你想当点击按钮的时候调用方法来修改 Lable 里面的内容

可以使用 command 来绑定回调函数


python 获取android屏幕图像 python 获取屏幕大小_python标题的位置_14


运行一波


python 获取android屏幕图像 python 获取屏幕大小_Python_15


添加文本输入框可以使用 Entry 对象


python 获取android屏幕图像 python 获取屏幕大小_Python_16


可以通过 entry 的 get 方法

获取输入的值

比如我们要让用户输入名称然后点击按钮把文字变成“xxx,你被绿了”就可以这样


python 获取android屏幕图像 python 获取屏幕大小_python 依据某几列累加求和_17


这里主要是将输入的内容

作为 name 参数传给 change_label 方法


python 获取android屏幕图像 python 获取屏幕大小_Python 如何添加新列_18


其它需要点击的组件使用方式和 Button 差不多

添加单选

RadioButton


python 获取android屏幕图像 python 获取屏幕大小_python 依据某几列累加求和_19


添加下拉选择框

使用 Combbox这个需要导入 ttk


python 获取android屏幕图像 python 获取屏幕大小_Python_20


多选框

CheckButton


python 获取android屏幕图像 python 获取屏幕大小_Python_21


弹窗messagebox

让它点击按钮的时候弹窗可以这样


python 获取android屏幕图像 python 获取屏幕大小_python tkinter获取屏幕大小_22


添加下拉选择框

使用 Combbox这个需要导入 ttk


python 获取android屏幕图像 python 获取屏幕大小_Python 如何添加新列_23


python 获取android屏幕图像 python 获取屏幕大小_Python_20


多选框

CheckButton


python 获取android屏幕图像 python 获取屏幕大小_Python_21


弹窗messagebox

让它点击按钮的时候弹窗可以这样


python 获取android屏幕图像 python 获取屏幕大小_python tkinter获取屏幕大小_22


python 获取android屏幕图像 python 获取屏幕大小_Python_27


除了 showinfo 之外show 警告和错误


python 获取android屏幕图像 python 获取屏幕大小_Python 如何添加新列_28


比如显示警告


python 获取android屏幕图像 python 获取屏幕大小_python tkinter获取屏幕大小_29


除了 showinfo 之外show 警告和错误


python 获取android屏幕图像 python 获取屏幕大小_Python 如何添加新列_28


比如显示警告


python 获取android屏幕图像 python 获取屏幕大小_python tkinter获取屏幕大小_29


长文本Text


python 获取android屏幕图像 python 获取屏幕大小_python 依据某几列累加求和_32


获取 Text 的内容


python 获取android屏幕图像 python 获取屏幕大小_Python_33


其中 get 可以传入两参数一个是想要获取的行数

一个是想要获取该行中的位置

使用 tk.END 可以获取全部

组件的布局

刚刚的布局有点乱可以在组件 pack 的时候设置参数来控制组件的位置


python 获取android屏幕图像 python 获取屏幕大小_Python 如何添加新列_34


这里用 side 指定位置padx 来指定边距

一般来说窗口如果有多个组件

会先定义 Frame 来先布局

Frame 也是一个组件

它可以填充其它组件进来

比如我们可以把刚刚的窗口


python 获取android屏幕图像 python 获取屏幕大小_python标题的位置_35


分成 5 个 Frame


python 获取android屏幕图像 python 获取屏幕大小_Python_36


这里将不同的组件填充到相应的 Frame 中每个 Frame 设置的间隔为 5


python 获取android屏幕图像 python 获取屏幕大小_python标题的位置_37


另一种比较常用的布局方式是使用 grid()

你可以把窗口看成是一个多行多列的表格

比如我们想把刚刚窗口的 5 个 Frame

划分成


python 获取android屏幕图像 python 获取屏幕大小_python tkinter获取屏幕大小_38


那么就可以这样


python 获取android屏幕图像 python 获取屏幕大小_Python_39


通过 grid 去指定 frame 的

具体在第几行第几列

其中 sticky 可以控制

组件的对其方向pad 控制间距

你还可以通过

rowconfigure 和 columnconfigure来控制单元格之间的大小


python 获取android屏幕图像 python 获取屏幕大小_python tkinter获取屏幕大小_40


一种更好的方式可以用面向对象的方式来使用 tkinter 写 GUI

像以下这样在类方法中定义组件和事件


python 获取android屏幕图像 python 获取屏幕大小_python 依据某几列累加求和_41


ok,以上

你可以自己去写点界面玩玩

当然了我在这里只是介绍一些常用组件的使用

大多组件的使用方式都差不多

更多的组件和使用细节可以参考https://docs.python.org/3/library/tk.html

哦对了

之前在 VIP 简单写了下聊天室的实现用的也是 tkinter


python 获取android屏幕图像 python 获取屏幕大小_python 依据某几列累加求和_42


希望对你又帮助