用人话讲计算机:python篇(十七)GUI界面设计:tkinter库 精简版
目录
一、什么是GUI设计
二、用Tkinter库实现
1.设置主窗口
(1)创建窗口
(2)设置标题
(3)设置大小、位置:
(4)设置左上角图标
(5)设置背景
2.标签
(1)创建标签
(2)设置 文本/标签 样式
(3)调整位置
3.按钮
(1)创建按钮
(2)设置样式
(3)调整位置
(4)交互作用
3.输入框
(1)创建输入框
(2)相关应用
(3)相关样式
三、网址分享
一、什么是GUI设计
GUI(Graphical User Interface,图形用户界面)指为软件应用或操作系统创建用户交互界面的过程,重点是通过图形、图像、图标和布局等元素,使得用户能够通过视觉与系统进行互动,而不需要记住复杂的命令或代码。
简单点说,GUI设计,就是设计一个操作界面
这里所说的操作界面,就是类似下图的操作界面:
它有图像、图标、布局等等,你可以通过点击这些,与之进行互动。
总之,能够实现以上内容的就是GUI设计。
而要实现它,我们往往需要库,在python中可以用的库有很多,诸如:
Tkinter库:几乎所有的Python安装都自带。它简单易用,适合开发小型桌面应用程序,但对于复杂的界面设计可能不够灵活和强大。
PyQt库:广泛用于开发复杂的桌面应用程序,功能强大,支持丰富的控件和高级特性,如自定义控件、绘图、动画等。它适用于需要跨平台支持的项目,尤其在Linux、Windows和macOS上表现良好。
wxPython库:与PyQt类似,wxPython也提供本地化的控件和跨平台支持,适用于传统桌面应用的开发。它的界面设计通常更接近操作系统的原生界面。
除此之外当然也有很多,今天下午主讲Tkinter库。
二、用Tkinter库实现
开始之前先进行导入库:
import tkinter #这是标准导入,但往往为了方便书写常常改名为tk,即下文
import tkinter as tk #下文采用此行代码
1.设置主窗口
(1)创建窗口
格式:
主窗口变量名=tk.Tk()
主窗口变量名.mainloop()
解释:
示例:
(2)设置标题
格式:
主窗口变量名.title("标题名字") #注意,要写在mainloop()之前
实例:
(3)设置大小、位置:
格式:
主窗口变量名.geometry('宽度x高度+X偏移xY偏移') #此处x是小写的字母x
解释:
示例:
(4)设置左上角图标
格式:
主窗口变量名.iconbitmap(文件路径) #记得加r或者改变斜杠,确定路径格式正确
注意,这里的文件须是 .ico 格式,如果你是png或者jpg等格式,建议去网站转换一下图片格式。
示例:
或者,你可以直接使用如下格式:
图标变量名=PhotoImage(file=r"C:\Users\33134\Desktop\123.png") #记得替换路径 主窗口变量名.iconphoto(True, 图标变量名)
(注:记得提前导入一个新库PhotoImage,即 from tkinter import PhotoImage )
示例:
(5)设置背景
设置为普通纯色
格式:
主窗口变量名.configure(bg='blue') #这里输入颜色英文单词即可
说明:
除此之外还可以输入颜色的十六进制代码(毕竟你若输入深黄的英文,计算机可识别不了)
常见如下:
设置为图片
设置为图片会比较麻烦,这里以png图片为例:
首先载入图片,然后我们可以创建一个画布canvas
然后将图片载入到画布上,最后将画布覆盖界面即可。
import tkinter as tk
from tkinter import PhotoImage
# 创建主窗口
a = tk.Tk()
a.title("python:A.sira")
a.geometry('400x300')
# 载入图片
i = PhotoImage(file=r"C:\Users\33134\Desktop\123.png")
# 创建画布并将图片作为背景
canvas = tk.Canvas(a, width=i.width(), height=i.height())
canvas.pack()
# 在画布上显示图片
canvas.create_image(0, 0, anchor="nw", image=i)
# 循环窗口
a.mainloop()
(注:该代码只适合png图片和gif)
详细解释:
canvas = tk.Canvas(a, width=i.width(), height=i.height())
将画布设置为和图片一样大小
canvas.pack()
用于将 canvas
(画布)添加到窗口中
canvas.create_image(0, 0, anchor="nw", image=i)
(0, 0)
:这是图片放置的坐标,表示画布的左上角。anchor="nw"
:这是锚点的设置,"nw"
表示锚点在图片的左上角。即,图片的左上角会被放置在 (0, 0)
位置。image=i
:这是我们要放置的图片对象。
如果你进行了实际操作就会发现,图片不是很那么合适,这可能是因为:
比如你的图片大小是1000×1500
而你的主窗口大小是400×300
窗口不太能完全承受哦~
最好的解决办法是修改窗口大小或者图片大小。
当然也可以修改代码。
但是代码千千万万,此文可写不清道不完,故而仅举个例。(不过后续我会出专门插入背景的文章的)
2.标签
(1)创建标签
标签就像是一张贴纸,可以将它贴在主窗口上。
格式:
标签变量名=tk.Label()
不过,我们常常将其结合使用,来看下面:
(2)设置 文本/标签 样式
比如我们,添加文本,必须要先创建一个标签
你可以将标签理解为一个贴纸,类似在贴纸上写好字,然后贴到黑板上
格式:
标签变量名=tk.Label(text="文本") #创建标签 标签变量名.pack() #让贴纸“贴”在黑板上
这样,你写的“文本”内容就会直接显示在主窗口上了。
说明:
关于Label后面的括号里,还可以设置点别的:
而如果不写某一项,则按默认设置处理
比如下面的示例中,我们设置为黄色背景,红色字,times字体,大小20,加粗且倾斜
示例:
补充1:
可供选择的字体格式:
楷体、宋体、仿宋、黑体等一切你电脑安装的字体
如果你想知道你安装了哪些字体,可调用下面代码:
import tkinter as tk
import tkinter.font as tkfont
root = tk.Tk()
fonts = tkfont.families()
print(fonts) # 输出所有可用的字体
可供选择的字体样式:
'normal'
: 正常样式(默认)'bold'
: 粗体'italic'
: 斜体'underline'
: 下划线'overstrike'
: 删除线你可以组合这些样式来获得不同的效果。样式设置需要使用字符串进行组合,如 'bold italic'
或 'underline'
。
可供选择的对齐格式:
对于单行文本:
anchor="n"
: 上对齐anchor="s"
: 下对齐anchor="e"
: 右对齐anchor="w"
: 左对齐anchor="ne"
: 右上对齐anchor="nw"
: 左上对齐anchor="se"
: 右下对齐anchor="sw"
: 左下对齐anchor="center"
: 居中对齐(默认)对于多行文本:
justify="left"
: 左对齐justify="center"
: 居中对齐justify="right"
: 右对齐可供选择的鼠标样式:
arrow
: 默认箭头形状circle
: 圆形cross
: 十字形plus
: 加号形状补充2:
以下还有些其他可添加的设置:
(3)调整位置
格式:
标签变量名.place(x= , y= ) #标签显示在坐标x= y= 上
示例:
3.按钮
(1)创建按钮
格式:
按钮变量名 = tk.Button(text="显示的文本") 按钮变量名.pack()
示例:
tips:这里Button括号里有个a,表示按钮控件应该添加到这个窗口(a
)中。
这样可以防止我们窗口很多时,出现混乱(标签也同理)
(2)设置样式
按钮的样式设置同理于标签,汇总如下:
(3)调整位置
格式原理同标签:
按钮变量名.place(x= , y= ) #按钮显示在坐标x= y= 上
(4)交互作用
按钮之所以不同于标签,是因为按钮具有交互作用,比如点击后,会发生些变化。
如:输出一段话,弹出图片、新窗口等。
原理:
我们可以在Button的括号里,再添加一个command
即,command = 打开新窗口命令
这样该按钮就会自动绑定这个命令,每当我们点击这个按钮时,命令执行,弹出新窗口。
而这个打开新窗口的命令,就是一个函数。
格式:
def 按钮调用函数名(): 新窗口变量名 = tk.Toplevel(主窗口变量名) 其他代码……
示例:
之后我们还可以在新窗口添加标签、关闭按钮:
tips:关闭一个窗口命令,如下所示
窗口变量名.destroy
3.输入框
(1)创建输入框
格式:
输入框变量名 = tk.Entry(窗口变量名) #创建输入框 输入框变量名.pack() #显示输入框
示例:
(2)相关应用
应用示例:输入相关内容后,如果输入内容为正确,则打开新界面
import tkinter as tk
from tkinter import messagebox #导入库:用来弹出诸如温馨提示的框
# 创建主窗口
a = tk.Tk()
a.geometry('300x400')
#输入框创建
e1 = tk.Entry(a)
e1.pack()
#创建弹出新窗口的函数
def open_new_window():
# 创建一个新窗口
new_window = tk.Toplevel(a)
new_window.geometry("300x200")
# 在新窗口中添加一个标签
label = tk.Label(new_window, text="输入内容正确!")
label.pack()
#验证输入内容的函数
def validate_input():
# 获取输入框的内容
input_text = e1.get()
# 设置正确的输入内容(例如“12345”)
correct_text = "12345"
# 验证输入内容
if input_text == correct_text:
open_new_window() # 输入正确,打开新窗口
else:
messagebox.showerror("错误", "输入内容不正确!") # 输入错误,弹出提示
#创建验证按钮
button= tk.Button(a, text="验证输入", command=validate_input)
button.pack(pady=10)
# 循环窗口
a.mainloop()
Tips:这里用到的库messagebox
它是用来弹出错误提示框的,这样可以省去我们手动创建新框的时间
(3)相关样式
我们可以在tk.Entry(窗口变量名, ……) 的括号里添加,原理和标签、按钮差不多
"normal"
:正常输入、"disabled"
:无法修改文本框内容、"readonly"
:只读模式"flat"
、"raised"
、"sunken"
、"solid"
等三、网址分享
以上就是关于 GUI界面设计:tkinter库 的全部内容了
不过这并不是tkinter库的极限,如果大家想进一步了解它的详细功能,我可以给大家分享一个学习网址,稍后我会放在评论区当中~~
作者:A.sir啊