TkinterGUI操作——做出属于自己的应用界面(一)

在当今技术驱动的世界中,图形用户界面(GUI)是人机交互的关键组成部分。Python,作为一种广泛使用的高级编程语言,提供了多种方法来创建 GUI 应用程序。其中,Tkinter 是 Python 的标准 GUI 库,它内置于大多数 Python 安装中,使得开发者能够轻松地创建窗口化应用程序。

Tkinter 提供了一系列控件,如按钮(Buttons)、文本框(Text boxes)、标签(Labels)和菜单(Menus),这些都是构建现代 GUI 应用程序的基础。它支持事件驱动编程,这意味着应用程序可以响应用户的操作,如点击、输入和滚动等

目录

工具准备

创建一个TK()窗口并完成点击

Button按钮

使用面向对象方式

图片GIF


工具准备

首先需要先安装好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

就可以了

看看结果:

这篇文章就先到此为止了,剩下还有很多内容值得学习。

------

本章到此结束,

希望能帮助到你。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值