在当今技术驱动的世界中,图形用户界面(GUI)是人机交互的关键组成部分。Python,作为一种广泛使用的高级编程语言,提供了多种方法来创建 GUI 应用程序。其中,Tkinter 是 Python 的标准 GUI 库,它内置于大多数 Python 安装中,使得开发者能够轻松地创建窗口化应用程序。
Tkinter 提供了一系列控件,如按钮(Buttons)、文本框(Text boxes)、标签(Labels)和菜单(Menus),这些都是构建现代 GUI 应用程序的基础。它支持事件驱动编程,这意味着应用程序可以响应用户的操作,如点击、输入和滚动等
目录
工具准备
首先需要先安装好python,Welcome to Python.org,点击Download
tkinter是python自带的库,正常安装肯定是有的
创建一个TK()窗口并完成点击
先导入tkinter库
from tkinter import *
from tkinter import messagebox
root = Tk() # 注意:“k”是小写
root.title("小花店") # 给窗口起个名字
root.geometry("500x200+100+200") # 控制窗口大小,这个的“x”就是字母“x”
# 其中的“100”是距离电脑窗口的高的距离
# “200”是距离电脑窗口的上宽的距离
# 可以自己多多尝试
root.mainloop() # 调用mainloop方法,进入事件循环
mainloop相当于是在监听用户的行为
Button按钮
接下来我们要定义一个按钮送花;
再定义一个送花的方法,这些代码要写在事件循环mainloop之前
btn01 = Button(root)
btn01["text"] = "点我就送花"
btn01.pack()
def songhua(e): # e就是事件对象
messagebox.showinfo("message", "送你一朵花,亲亲我吧")
print("送你99朵花")
btn01.bind("<Button-1>", songhua)
这里
btn01.pack()
就是将所定义的键显示出来,记得一定要加上这行代码哦!!
而
messagebox.showinfo("message", "*****")
就是一个消息窗口
接下来运行代码并点击,查看运行结果
这里就已经可以完成点击,并且弹出提示窗口的行为了
使用面向对象方式
接下来我们要使用面向对象方式来写这个程序,并且写出“退出”键
这里新建一个python文件,先写好主程序
from tkinter import *
from tkinter import messagebox
if __name__=="__main__":
root = Tk()
root.geometry("400x100+200+300")
root.title("一个经典的GUI程序类的测试")
app = Application(master=root)
root.mainloop()
然后开始定义一个Application类,他继承自tkinter库的Frame类
class Application(Frame):
"""一个经典的GUI程序"""
def __init__(self, master=None):
super().__init__(master) # super()代表的是父类的定义,而不是父类对象
self.master = master
self.pack()
self.createWidget()
Frame: 这是 Tkinter 库中的一个组件类,用于创建一个容器,你可以在其中放置其他 GUI 组件,如按钮、文本框等。Frame
可以看作是一个可以包含其他组件的矩形区域。
这里使用了一个调用了一个接下来会创建的createWidget()函数
def createWidget(self):
"""创建组件"""
self.bn01 = Button(self)
self.bn01["text"] = "点击送花"
self.bn01.pack()
self.bn01["command"] = self.songhua
# 创建一个退出按钮
self.btnQUIT = Button(self, text='退出', command=self.destroy)
self.btnQUIT.pack()
这里就完成了,一个点击送花,还有退出功能
但是调用了一个songhua函数,我们来写出来
def songhua(self):
messagebox.showinfo("送花", "送你99朵花")
整体的代码长这样:
from tkinter import *
from tkinter import messagebox
class Application(Frame):
def __init__(self, master=None):
super().__init__()
self.master = master
self.pack()
self.createWidget()
def createWidget(self):
"""创建组件"""
self.btn01 = Button(self)
self.btn01["text"] = "点击送花"
self.btn01.pack()
self.btn01["command"] = self.songhua
# 创建一个退出按钮
self.btnQUIT = Button(self, text='退出', command=self.destroy)
self.btnQUIT.pack()
def songhua(self):
messagebox.showinfo("送花", "送你99朵花")
if __name__ == '__main__':
root = Tk()
root.geometry("400x100+200+300")
root.title("一个经典的GUI程序类的测试")
app = Application(master=root)
root.mainloop()
运行一下看看结果
这样代码就完成了
图片GIF
tkinter里的图片都是gif格式的
先完成一个大概的框架:
from tkinter import *
from tkinter import messagebox
class Application(Frame):
def __init__(self, master=None) :
super().__init__(master)
self.master = master
self.pack()
self.createWidget()
if __name__=="__main__":
root = Tk()
root.geometry("400x300+200+300")
root.title("Label")
app = Application(master=root)
root.mainloop()
来构建一个组件函数,放来Application类里:
def createWidget(self):
"""创建组件"""
self.label01 = Label(self,text="Hello World", width=10, height=2,
bg='black', fg='white')
self.label01.pack()
self.label02 = Label(self, text="很高心您使用该软件", width=20, height=2,
bg='blue', fg='white',font=("微软雅黑", 30))
self.label02.pack()
Label这里就相当于是往窗口上渲染了一些内容
bg就是文字框的背景颜色,而fg在这里就是文字本身的颜色
接着不要忘了,一定要给他pack()一下,不然不会显现
font就是控制字体字号
我们这里就可以试着运行了
然后在上一个组件函数内,显示图像
photo = PhotoImage(file='imgs/logo.gif') # 这里就是填写你的需要渲染上去的图像
self.label03 = Label(self, image=photo)
self.label03.pack()
self.label04 = Label(self,text='其实你很帅的\n只不过有点懒惰啊\n多多加把劲\n肯定能更好的',
borderwidth=1, relief="solid", justify='right')
'''borderwidth:这个参数设置标签的边框宽度。
borderwidth=1 表示边框宽度为1像素。
relief="solid": 这个参数设置标签的边框样式。"solid" 表示边框是实线。其他可选的样式包括"flat"(无边框)、"sunken""(凹陷效果)、"raised"(凸起效果)等。
justify = 'right': 这个参数设置文本在标签中的对齐方式。
'right'表示文本靠右对齐。其他可选的对齐方式包括
'left'(左对齐)、'center'(居中对齐)等。'''
self.label04.pack()
看看结果
发现图像仍旧未显现,是因为photo并未成为全局变量,而在刷新过后,photo就失效了
所以在之前代码添加上:
global photo
就可以了
看看结果:
这篇文章就先到此为止了,剩下还有很多内容值得学习。
------
本章到此结束,
希望能帮助到你。