自学内容网 自学内容网

用人话讲计算机: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()

解释:

  • 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)!