GUI图形用户接口

这篇博客介绍了Python中用于创建GUI图形用户接口的常用框架,如Tkinter、PyQt、wxPython等,并详细讲解了如何创建基本的窗口,包括添加标签、输入框,并探讨了布局管理如pack()方法。

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

程序的基本结构

输入—控制—输出

GUI图形用户接口
Graphical User Interface

1、Python常用的GUI框架

Tkinter 内置模块
PyQt
wxPython
Kivy
Flexx
pywin32
pyui4win

2、创建窗口

先创建一个空窗口

from tkinter import *    # 先引入

root = Tk()   # 创建窗口


root.mainloop()    # 主线程的一个循环,让操作系统知道这窗口不是马上就消失,而是要一直监听用户的输入

创建窗体

from tkinter import *    # 先引入

root = Tk()   # 创建窗口
root.title("个人所得说计算器 v1.0")     # 指定标题
root.geometry("400x200+400+300")    # 指定宽高,单位是像素;左侧和顶端的偏移量

root.mainloop()    # 主线程的一个循环,让操作系统知道这窗口不是马上就消失,而是要一直监听用户的输入

加入标签 Label

# 标签 label
from tkinter import *    # 先引入

root = Tk()   # 创建窗口
root.title("个人所得说计算器 v1.0")     # 指定标题
root.geometry("400x200+400+300")    # 指定宽高,单位是像素;左侧和顶端的偏移量

inputLabel = Label(root, text='人生苦短,我用python', bg='lightblue', font='微软雅黑 12 normal')   # 定义/实例化一个标签,Label第一个参数放在主窗口root里面
inputLabel.pack(padx=5, pady=10, fill=X)    # 将标签放置在窗体上,参数表示设置间距,单位像素

inputLabel = Label(root, text='人生苦短,我用python', bg='lightyellow', font='微软雅黑 12 normal')   # 定义/实例化一个标签,Label第一个参数放在主窗口root里面
inputLabel.pack(padx=5, pady=10, fill=BOTH, expand=True)   # 动态的变化

root.mainloop()    # 主线程的一个循环,让操作系统知道这窗口不是马上就消失,而是要一直监听用户的输入

输入块

from tkinter import *    # 先引入
from ch12.person_tax_calc import calc


def tax_calc():
    inputCount = inputVar.get()
    tax = calc(int(inputCount))
    outputVar.set("所得税:%.2f 元" % tax)



root = Tk()   # 创建窗口
root.title("个人所得说计算器 v1.0")     # 指定标题
root.geometry("400x200+400+300")    # 指定宽高,单位是像素;左侧和顶端的偏移量

topFrame = Frame(root)   # 容器将下面三个模块封装到一起
inputLabel = Label(topFrame, text='请输入月收入:')   # 定义/实例化一个标签,Label第一个参数放在容器topFrame里面
inputLabel.pack(side=LEFT,padx=5, pady=5)    # 将标签放置在窗体上,参数表示设置间距,单位像素

inputVar = StringVar()    # 字符串类型的变量
inputEntry = Entry(topFrame, textvariable=inputVar)  # 单行文本输入块,参数是获取输入值
inputEntry.pack(side=LEFT)

inputButton = Button(topFrame, text='计算', command=tax_calc)  # 按钮,里面参数让按钮动起来
inputButton.pack(side=LEFT,padx=5, pady=5)   # 按钮间距
topFrame.pack(padx=5, pady=5)   # 容器封装

outputVar = StringVar()
outputVar.set('点击计算')
outputLabel = Label(root, textvariable=outputVar, font='微软雅黑 24 normal', fg='green')
outputLabel.pack(padx=5, pady=5)

root.mainloop()    # 主线程的一个循环,让操作系统知道这窗口不是马上就消失,而是要一直监听用户的输入

在这里插入图片描述
布局相关的方法此处用了pack(),除此之外还有grid() place()

例如:简单模拟一个登陆页面

from tkinter import *    # 先引入
from tkinter import messagebox


def login():        # 定义登陆函数
    username = userVar.get()
    password = passVar.get()
    print(username, password)
    if username == '' or password == '':
        messagebox.showinfo('错误', '用户名和密码不能为空。')
    elif username == 'sniper' and password == '123456':
        messagebox.showinfo('信息', '登陆成功')
    else:
        messagebox.showinfo('错误', '用户名和密码不匹配')



root = Tk()   # 创建窗口
root.title("模拟登录")     # 指定标题
root.geometry("400x200+400+300")    # 指定宽高,单位是像素;左侧和顶端的偏移量

Label(root, text='请输入用户名和密码:').pack(pady=30)

userFrame = Frame(root)
Label(userFrame, text='用户名:').pack(side=LEFT, padx=5, pady=5)
userVar = StringVar()
Entry(userFrame, textvariable=userVar).pack(side=LEFT, padx=5, pady=5)
userFrame.pack()

passFrame = Frame(root)
Label(passFrame, text='密   码:').pack(side=LEFT, padx=5, pady=5)
passVar = StringVar()
Entry(passFrame, textvariable=passVar, show='*').pack(side=LEFT, padx=5, pady=5) # 密码非明文显示
passFrame.pack()

buttonFrame = Frame(root)
Button(buttonFrame, text='登录', command=login).pack(side=LEFT, padx=5, pady=5)
Button(buttonFrame, text='取消', command=root.destroy).pack(side=LEFT, padx=5, pady=5)  # root窗口被销毁
buttonFrame.pack()


root.mainloop()    # 主线程的一个循环,让操作系统知道这窗口不是马上就消失,而是要一直监听用户的输入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值