用人话讲计算机:python篇(十七)GUI界面设计:tkinter库 精简版
目录
一、什么是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()
解释:
- 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
:这是我们要放置的图片对象。
如果你进行了实际操作就会发现,图片不是很那么合适,这可能是因为:
比如你的图片大小是1000x1500
而你的主窗口大小是400x300
窗口不太能完全承受哦~
最好的解决办法是修改窗口大小或者图片大小。
当然也可以修改代码。
但是代码千千万万,此文可写不清道不完,故而仅举个例。(不过后续我会出专门插入背景的文章的)
2.标签
(1)创建标签
标签就像是一张贴纸,可以将它贴在主窗口上。
格式:
标签变量名=tk.Label()
不过,我们常常将其结合使用,来看下面:
(2)设置 文本/标签 样式
比如我们,添加文本,必须要先创建一个标签
你可以将标签理解为一个贴纸,类似在贴纸上写好字,然后贴到黑板上
格式:
标签变量名=tk.Label(text="文本") #创建标签 标签变量名.pack() #让贴纸“贴”在黑板上
这样,你写的“文本”内容就会直接显示在主窗口上了。
说明:
关于Label后面的括号里,还可以设置点别的:
- bg="字体背景颜色"
- fg="文本颜色"
- font=('字体格式',字体大小, '加粗/倾斜') #加粗写bold,倾斜写italic
- anchor=“对齐格式” #如果是多行文本则用justify=“对齐格式”
- cursor=“鼠标放置在该标签时,显示的样式”
而如果不写某一项,则按默认设置处理
比如下面的示例中,我们设置为黄色背景,红色字,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:
以下还有些其他可添加的设置:
- bd: 用来指定 Label 控件的边框宽度,单位为像素,默认为 2 个像素
- height/width:设置 Lable 的高度/宽度,如果 Lable 显示的是文本,那么单位是文本单元,如果 Label 显示的是图像,那么单位就是像素
- highlightbackground:当 Label 没有获得焦点的时候高亮边框的颜色
- highlightcolor:当 Lable 获得焦点的话时候高亮边框的颜色
- image:指定 Label 显示的图片,一般是 PhotoImage、BitmapImage 的对象
- relief:指定边框样式,默认值是 "flat",其他参数值有 "groove"、"raised"、"ridge"、"solid"或者"sunken"
(3)调整位置
格式:
标签变量名.place(x= , y= ) #标签显示在坐标x= y= 上
示例:
3.按钮
(1)创建按钮
格式:
按钮变量名 = tk.Button(text="显示的文本") 按钮变量名.pack()
示例:
tips:这里Button括号里有个a,表示按钮控件应该添加到这个窗口(a
)中。
这样可以防止我们窗口很多时,出现混乱(标签也同理)
(2)设置样式
按钮的样式设置同理于标签,汇总如下:
- anchor: 对齐格式
- activebackground:当鼠标放在按钮上时候,按妞的背景颜色
- activeforeground:当鼠标放在按钮上时候,按钮的前景色
- bd:按钮边框的大小,默认为 2 个像素
- bg:按钮的背景色
- fg:文本颜色
- font:文本字体样式
- height:按钮的高度
- highlightcolor:按钮高亮处显示颜色
- image: 按钮上要显示的图片
- justify:多行文本时,文本的对齐方式
- padx/pady:padx 指在文本的左右都添加相同x距离,pady 指在文本的上下都添加相同y距离。
- state:设置按钮的可用状态,可选参数有normal(可点击)/disabled(不可点击)/active(悬停或点击时激活)
- text:显示的文本
(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(窗口变量名, ……) 的括号里添加,原理和标签、按钮差不多
- width:设置文本框的宽度,以字符数为单位
- font:设置文本框中文字的字体和大小
- bg:设置文本框的背景色
- fg:设置文本框中文字的颜色
- show:隐藏文本框中的字符(通常用于密码输入),如 show= "*"
- state:
"normal"
:正常输入、"disabled"
:无法修改文本框内容、"readonly"
:只读模式 - insertbackground:设置插入符(光标)的颜色。如,insertbackground="green"
- relief:设置文本框的边框样式。包括
"flat"
、"raised"
、"sunken"
、"solid"
等 - justify:多行文本对齐格式
- ……
三、网址分享
以上就是关于 GUI界面设计:tkinter库 的全部内容了
不过这并不是tkinter库的极限,如果大家想进一步了解它的详细功能,我可以给大家分享一个学习网址,稍后我会放在评论区当中~~
原文地址:https://blog.csdn.net/2301_81711570/article/details/145183578
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!