你要的 Python 创建 GUI 用户界面程序,来咯




时不时就有 b 友让我整点
“Python GUI 相关的教程”


今天小帅b就来给你说道说道



你要的 Python 创建 GUI 用户界面程序,来咯



用 Python 来写 GUI 的库有好几个
比如 pyqt、wxpython、tkinter、kivy



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


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


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



你要的 Python 创建 GUI 用户界面程序,来咯




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


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




你要的 Python 创建 GUI 用户界面程序,来咯



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



你要的 Python 创建 GUI 用户界面程序,来咯




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


那么如何玩 tkinter 呢


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

你要的 Python 创建 GUI 用户界面程序,来咯




组件的使用


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


首先我们导入 tkinter
然后调用 Tk 方法



你要的 Python 创建 GUI 用户界面程序,来咯




运行就可以得到一个窗口



你要的 Python 创建 GUI 用户界面程序,来咯




样式与你的系统类型相关


其中我们调用了 mainloop 方法
主要是让它去循环等待用户的交互


定义窗口的标题



你要的 Python 创建 GUI 用户界面程序,来咯





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


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


当然,你也可以
使用 geometry
自己指定窗口的宽高



你要的 Python 创建 GUI 用户界面程序,来咯





tkinter 把不同的组件
都封装成了 Class

比如想要往里加入文本
就可以使用 Label 对象



你要的 Python 创建 GUI 用户界面程序,来咯




这里创建了一个 Label 小组件
然后用 pack 塞到窗口中去


每个组件都有一些属性可以设置
比如这里可以设置常用的宽高字体颜色



你要的 Python 创建 GUI 用户界面程序,来咯





加个骚骚的按钮



你要的 Python 创建 GUI 用户界面程序,来咯






你要的 Python 创建 GUI 用户界面程序,来咯



按钮可以定义点击事件


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


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



你要的 Python 创建 GUI 用户界面程序,来咯





运行一波



你要的 Python 创建 GUI 用户界面程序,来咯




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



你要的 Python 创建 GUI 用户界面程序,来咯




可以通过 entry 的 get 方法
获取输入的值


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



你要的 Python 创建 GUI 用户界面程序,来咯




这里主要是将输入的内容
作为 name 参数传给 change_label 方法



你要的 Python 创建 GUI 用户界面程序,来咯





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


添加单选
RadioButton



你要的 Python 创建 GUI 用户界面程序,来咯




添加下拉选择框
使用 Combbox
这个需要导入 ttk



你要的 Python 创建 GUI 用户界面程序,来咯




你要的 Python 创建 GUI 用户界面程序,来咯




多选框
CheckButton



你要的 Python 创建 GUI 用户界面程序,来咯




弹窗
messagebox

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



你要的 Python 创建 GUI 用户界面程序,来咯




你要的 Python 创建 GUI 用户界面程序,来咯




除了 showinfo 之外
show 警告和错误


你要的 Python 创建 GUI 用户界面程序,来咯




比如显示警告



你要的 Python 创建 GUI 用户界面程序,来咯





还可以用疑问的方式展示



你要的 Python 创建 GUI 用户界面程序,来咯




比如 askquestion



你要的 Python 创建 GUI 用户界面程序,来咯




长文本
Text


你要的 Python 创建 GUI 用户界面程序,来咯


获取 Text 的内容



你要的 Python 创建 GUI 用户界面程序,来咯




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

使用 tk.END 可以获取全部



组件的布局



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



你要的 Python 创建 GUI 用户界面程序,来咯




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

一般来说
窗口如果有多个组件
会先定义 Frame 来先布局

Frame 也是一个组件
它可以填充其它组件进来


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



你要的 Python 创建 GUI 用户界面程序,来咯




分成 5 个 Frame



你要的 Python 创建 GUI 用户界面程序,来咯




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



你要的 Python 创建 GUI 用户界面程序,来咯





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

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

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


f4
f2
f1
f3
f5



那么就可以这样



你要的 Python 创建 GUI 用户界面程序,来咯




通过 grid 去指定 frame 的
具体在第几行第几列

其中 sticky 可以控制
组件的对其方向
pad 控制间距


你还可以通过
rowconfigure 和 columnconfigure
来控制单元格之间的大小



你要的 Python 创建 GUI 用户界面程序,来咯




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


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



你要的 Python 创建 GUI 用户界面程序,来咯



ok,以上
你可以自己去写点界面玩玩


当然了
我在这里只是介绍一些常用组件的使用
大多组件的使用方式都差不多


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


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



你要的 Python 创建 GUI 用户界面程序,来咯




感兴趣可以在阅读原文中了解


那么,我们下回见
peace




你要的 Python 创建 GUI 用户界面程序,来咯


太爱我的话就加我微信

备注【读者】即可通过



你要的 Python 创建 GUI 用户界面程序,来咯







点亮在看
你我同在

原文始发于微信公众号(学习python的正确姿势):你要的 Python 创建 GUI 用户界面程序,来咯

发表回复