python14(GUI图形)

本文介绍了如何使用Tkinter创建基本GUI应用,包括主窗口、Label标签、Options按钮和Entry/Text组件,以及面向对象编程的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在这里插入图片描述
上面的各种按钮、菜单、编辑区械等都是一个个组件,它们都放置到窗口中,并通过增加“对事件的处理”成为一个完整的程序。

常用的GUI库

1.tkinter (Tk interface)是 Python的标准GUI库,支持跨平台的GUI程序开发。tkinter适合小型的GUI程序编写,也特别适合初学者学习GUI编程。
2. wxPython
wxPython是比较流行的GUI库,适合大型应用程序开发,功能强于tkinter ,整体设计框架类似于MFC(MicrosoftFoundation Classes 微软基础类库)。
3. PyQT
t是一种开源的GUI库,适合大型 GUI程序开发,PyQT是Qt工具包标准的Python实现。我们也可以使用QtDesginer界面设计器快速开发GUI应用程序。

创建简单的GUI

1.创建应用程序主窗口对象
2.在主窗口中,添加各种可视化组件,比如:按钮,文本框
3.通过布局管理器,管理组件的大小和位置
4.事件处理
(1)通过绑定事件的处理程序,实现动态化

#coding:gbk
from tkinter import *
from tkinter import messagebox
root =Tk()

btn01=Button(root)
btn01["text"]="点我"
btn01.pack()

def songhua(e):#e就是事件的对象
    messagebox.showinfo("Message","送你一朵花")
    print("送你一朵小红花")

btn01.bind("<Button-1>",songhua)

root.mainloop() #调用组件的mainloop()方法,进入事件循环

在这里插入图片描述

tkinter主窗口

通过geometry(‘wxh±x±y’)进行设置,w为宽度, h为高度。+X表示距屏幕左边的距离; -表示距屏幕右边的距离;+y表示距屏幕上边的距离; -y表示距屏幕下边的距离。

#coding:gbk
from tkinter import *
from tkinter import messagebox
root =Tk()

root.title("我的第一个GUI")
root.geometry("500x300+100+200")#横500,竖300,

btn01=Button(root)
btn01["text"]="点我"
btn01.pack()

def songhua(e):#e就是事件的对象
    messagebox.showinfo("Message","送你一朵花")
    print("送你一朵小红花")

btn01.bind("<Button-1>",songhua)

root.mainloop() #调用组件的mainloop()方法,进入事件循环

在这里插入图片描述
常用组件
在这里插入图片描述

GUI采用面向对象

#coding:gbk
from tkinter import *
from tkinter import messagebox
class Application(Frame):
    """"一个经典的GUI程序类的写法"""

    def __init__(self,master=None):
        super().__init__(master)
        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=root.destroy)
        self.btnQuit.pack()


    def songhua(self):
        messagebox.showinfo("送花","送你一朵小红花")

root=Tk()
root.geometry("400x100+200+300")
root.title("一个经典的GUI")
app=Application(master=root)

root.mainloop()

在这里插入图片描述

Label标签

label主要用于显示文本信息,也可以显示图像
在这里插入图片描述

#coding:gbk
from tkinter import *
class Application(Frame):
    """"一个经典的GUI程序类的写法"""

    def __init__(self,master=None):
        super().__init__(master)
        self.master=master
        self.pack()
        self.createWidget()

    def createWidget(self):
        self.label01=Label(self,text="jxlg",width=10,height=2,bg="black",fg="white")
        self.label01.pack()
        self.label02=Label(self,text="ssl",width=10,height=2,bg="black",fg="white",font=("黑体",30))
        self.label02.pack()



root=Tk()
root.geometry("400x100+200+300")
root.title("第二个GUI")
app=Application(master=root)
root.mainloop()

在这里插入图片描述

Options选项

在这里插入图片描述

Button

用来执行用户的单机操作

#coding:gbk
from tkinter import *
from tkinter import messagebox
class Application(Frame):
    """"一个经典的GUI程序类的写法"""

    def __init__(self,master=None):
        super().__init__(master)
        self.master=master
        self.pack()
        self.createWidget()

    def createWidget(self):
        self.btn01=Button(root,text="登录",command=self.login)
        self.btn01.pack()
        global photo
        photo=PhotoImage(file="D:\桌面\Python\project01\GUI\pikaqiu.gif")
        self.btn02=Button(root,image=photo,command=self.login)
        self.btn02.pack()

    def login(self):
        messagebox.showinfo("jxlg","ssl")


if __name__=='__main__':
    root=Tk()
    root.geometry("400x100+200+300")
    root.title("第二个GUI")
    app=Application(master=root)
    root.mainloop()

在这里插入图片描述

Entry单行文本框

Entry 用来接收一行字符串的控件。如果用户输入的文字长度长于Entry控件的宽度时,文字会自动向后滚动。如果想输入多行文本,需要使用Text控件。

#coding:gbk
from tkinter import *
from tkinter import messagebox
class Application(Frame):
    """"一个经典的GUI程序类的写法"""

    def __init__(self,master=None):
        super().__init__(master)
        self.master=master
        self.pack()
        self.createWidget()

    def createWidget(self):
        """创建登录界面的组件"""
        self.label01=Label(self,text="用户名")
        self.label01.pack()

        # StringVar变量,绑定到指定的组件
        # StringVar 变量的值发生变化,组件内容也发生变化
        v1=StringVar()
        self.entry01=Entry(self,textvariable=v1)
        self.entry01.pack()
        v1.set("admin")
        print(v1.get());print(self.entry01.get())

        #创建密码框
        self.label02 = Label(self, text="密码")
        self.label02.pack()

        v2=StringVar()
        self.entry02=Entry(self,textvariable=v2,show="*")
        self.entry02.pack()


        self.btn01=Button(self,text="登录",command=self.login)
        self.btn01.pack()


    def login(self):
        username=self.entry01.get()
        pwd=self.entry02.get()

        print("去数据库比对用户名和密码")
        print("用户名:"+username)
        print("密码:"+p)

        if username=="ssl" and p=="123456":
            messagebox.showinfo("jxlg","密码正确,登录成功")
        else:
            messagebox.showinfo("jxlg","密码错误,登录失败")


if __name__=='__main__':
    root=Tk()
    root.geometry("400x200+200+300")
    app=Application(master=root)
    root.mainloop()

在这里插入图片描述

Text多行文本框

Text(多行文本框)的主要用于显示多行文本,还可以显示网页链接,图片,HTML页面,甚至CSS样式表,添加组件等。因此,也常被当做简单的文本处理器、文本编辑器或者网页浏览器来使用。比如IDLE就是Text 组件构成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值