PythonGUI 图形化界面详解
简介
话说你看到的软件是不是都是用图形化界面(Graphical User Interface, GUI)整出来的?
比如这个:
然鹅,再看看咱的 “图形化界面”:
upd:这里的命令行界面连图形化界面都不是,应该叫文本用户界面(Text User Interface, TUI),不可以混淆!
根本不是一个等级的啊!于是,我们来用 Python 整一个真正的 GUI 吧!
安装环境
{% note info %} 如果您已安装Python和一个另外的IDE,可以忽略此步骤。但如果后续发现有模块运行不了且代码、模块等正常,可以按照此步骤重新安装。 {% endnote %}见这里
easygui
1 | pip install easygui |
在你的终端中运行这段代码。如果出现了下面的东西,那么就说明安装 easygui 成功啦(以后我介绍的模块除了特殊说明外,都要用类似的方法安装,就不在提了)
1 | Looking in indexes: https://mirrors.sustech.edu.cn/pypi/simple |
然后,在你的 IDE 中新建个.py
文件,输入这段代码,如果出现了下面这幅图,就算成功啦!
1 | import easygui as eg |
点掉下面的 OK
,窗口就会消失。
如果有问题,请核实一下下面的东西:
{% note warning %} easygui 是运行在 tkinter 上并拥有自身的事件循环,而 IDLE 也是 tkinter 写的一个应用程序并也拥有自身的事件循环。因此当两者同时运行的时候,有可能会发生冲突,且带来不可预测的结果。因此如果你发现你的 easygui 程序有这样的问题,请尝试在 IDLE 外去运行你的程序。 {% endnote %}其实就 3 句话:
不要用自带的 IDLE!!!
不要用自带的 IDLE!!!
不要用自带的 IDLE!!!
如果没问题,那么,恭喜你,再次打开了新世界的大门!
接下来,就是对它的一顿研究了
1 | eg.msgbox(msg="A + B Problem", title="Leo2011", ok_button="I AK IOI!") |
不出所料的话,应该是这样的:
看,我们用 title="Leo2011"
把标题改成了 "Leo2011",用 ok_button="I AK IOI!"
把下面的按钮改成了 "I AK IOI!"。
这就 msgbox 能干的事了。
下面,咱来看另外的几个家伙:
-
enterbox
1
2s = eg.enterbox("欢迎您随便输入一堆东西", title=tit)
eg.msgbox(msg="您刚才输入了\n"+s, title=tit, ok_button="我知道了。")能弹出这么个框:
框中可以随便输东西(只要你打得出来),输完了按回车或点 OK
(这个不能改)结束。如果你点了 Cancel
或直接关掉了这个框,会返回 None
(这不是一个字符串,是 Nonetype
,意思就是啥也没有)
-
multenterbox
有一堆 enterbox 在一个窗口里。
-
passwordbox
跟 enterbox 一样,只不过用户视角中输入的字符只能看到 “*”,跟输密码似的。
-
multpasswordbox
有一堆 passwordbox 在一个窗口里。
-
ccbox
1
2s = eg.ccbox("欢迎您随便选东西", title=tit, choices=["[D]ebug", "C[t]j"])
eg.msgbox(msg="您刚才输入了\n"+str(s), title=tit, ok_button="我知道了。")[] 里的字符相当于快捷键,你按下这个键就会认为你选了这个选项。ccbox 只能有两个选项(否则解释器会炸)。
-
boolbox/ynbox
同 ccbox,不讲。
-
choicebox
1
s = eg.choicebox("欢迎您随便选东西", title=tit, choices=["Debug", "Ctj", "AC!"])
UI 会变成这样:
刚才的快捷键就只能是首字母了。choicebox 可以有多个选项,但只能选一个(默认是第一个)。 -
buttonbox
同 choicebox,不讲。
-
indexbox
跟 choicebox 一样,只不过 choicebox 会返回你选中的文本,而 indexbox 会返回你选中的那货在你的选项列表里的下标。
-
multchoicebox
有一堆 choicebox 在一个窗口里?
这次 easygui 不按套路出牌了,界面长这样:
Select All
就是全选,Clear All
就是全不选,剩下两个老朋友了。
返回值是这样的['Debug', 'AC!']
。它会按你选中的选项在选项列表里的相对位置排成一个新列表。 -
integerbox
1
s = eg.integerbox(msg="请输入一个数", title=tit, default=5, lowerbound=3, upperbound=7)
指定你输入一个在
lowerbound
和upperbound
之间的整数,默认为default
。如果不在区间内了会让你重新输入。 -
egdemo
easygui 所有函数的效果演示。
eaysgui 确实很 easy!
turtle
{% note info %} Tips:实测Python turtle的不同版本在不同平台上可能会有所不同,本文以Windows 11 + Python 3.12.1为准。 {% endnote %}turtle 库(人送绰号 “海龟绘图”)是 Python 的内置库,安装了 Python 就可以直接用。
1 | import turtle as t |
这就是你的第一个 turtle 程序了!
下面,还是来介绍几个基本函数的使用:
-
home
木有参数。回到原点 (0, 0),也就是屏幕正中央的起始位置(这在你画图画懵 13 的时候很有用)。
-
forward/fd
1 个参数
,表示你想要让这个画笔沿笔头方向前进 个像素。如 fd(1000)
即让画笔从当前位置前进 1000 个像素。 -
backward/bk/back
1 个参数
,相当于 fd(-k)
,即沿笔头方向后退步。 -
left/lt
1 个参数
,表示你想让画笔左转 。 -
right/rt
1 个参数
, 表示你想让画笔右转 。 -
goto
2 个参数
,表示将画笔直线移动到 的位置。如果画笔还没被抬起来,就会把轨迹画下来。 -
circle
用来画圆的(这是空心的)。参数最多 3 个:
, 表示要画的圆的半径(必须要写), 表示圆心角度数(默认为整个圆), 表示要画的正多边形边数(不写会自动确定)。这里解释一下,电脑上画圆不太现实,都是用正 边形(这个 一般不小)模拟出来的,所以这个函数即可用来画圆也可以用来画正多边形。 -
dot
也是画一个圆。最多两个参数:
和 color。 指要画的圆的直径,color 是一个字符串,表示要画的圆的颜色。与 circle 不同,dot 画的圆是实心的,而 circle 默认情况下是空心的。 -
penup/up/pu
抬起笔,此后在落下笔之前所有的操作都不会留下痕迹。
-
pendown/pd/down
落下笔。一般可以这么使:
1
2
3
4def move(x, y):
t.pu()
t.goto(x, y)
t.pd() -
speed
设置速度的,有一个参数
。你在用的时候,应保证 。一般情况下, 是个整数,且越大代表越快,但也有例外: 的值 速度 0 或 "fastest" 最快 10 或 "fast" 快 6 或 "normal" 正常(默认) 3 或 "slow" 慢 1 或 "slowest" 最慢 -
pensize/width
一个参数
,表示画笔粗细。 -
pencolor
可以没有参数,此时返回画笔颜色(默认是黑色 ),也可以给出参数,此时是设置颜色。
有以下几种设置模式:
1
2
3
4t.pencolor("red") # 设置为红色
t.pencolor("#abcde") # 设置为十六进制编码为“abcde”的颜色
t.pencolor((1, 255, 255)) # 设置为青色。三个数值表示RGB编码
t.pencolor(1, 255, 255) # 同上,只不过上面传过去的是一个元组。 -
fiilcolor
填充颜色,同上。
-
color
两个都设置了,可以填写 1~2 组参数。1 组就是设置成一样的,两组就是先 pencolor 再 fillcolor。
-
bgcolor
背景颜色,参数同 pencolor。
-
bgpic
背景图片,需要给一个字符串表示背景图片位置。如果是 "nopic" 就是删除背景图片。
-
begin_fill
记录一下,准备填充。
-
end_fill
把上次 begin_fill 以后画的东西填充成 fillcolor。
-
write
主要有 2 个参数,文字和设置。可以把文字设置成属性后写上去,如开头的例子。
-
hideturtle/ht
隐藏画笔,能加速。
-
showturtle/st
显示画笔。
-
shape
海龟绘图,海龟在哪儿呢?
就是这么设置的。
给定一个参数,它会自动把海龟调整成对应的形状。
支持以下形状:
- “arrow”
- “turtle”
- “square”
- “triangle”
- “classic”
可以自己去试一试~
-
stamp
把画笔印在当前位置,即在那个位置留下海龟的形状。
turtle 库就先介绍这些,不少了。自个儿试着画几张图去吧!
老规矩,有问题的欢迎私信联系我。
- 标题: PythonGUI 图形化界面详解
- 作者: Leo2011
- 创建于 : 2023-12-29 23:07:10
- 更新于 : 2024-12-22 20:28:16
- 链接: https://www.leo2011.eu.org/2023/12/29/pythongui-tu-xing-hua-jie-mian-xiang-jie/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。