Python GUI编程从入门到精通:10个实用案例解析

Python GUI入门详解-学习篇 GUI就是图形用户界面的意思,在Python中使用PyQt可以快速搭建自己的应用,自己的程序看上去就会更加高大上。有时候使用 python 做自动化运维操作,开发一个简单的应用程序非常方便。程序写好,每次都要通过命令行运行 python 程序,就不是那么人性化了。为了更方便的操作,使用 Python GUI 编写界面程序,方便后续程序的操作。 阅读详情

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取】

前言
Python作为一门简单易学的编程语言,在GUI开发领域也有着丰富的库和框架支持。本文将带你从零开始学习Python GUI编程,并通过10个由浅入深的实战案例,掌握GUI开发的核心技能。

一、Python GUI开发基础
1.1 主流GUI库介绍
Python中常用的GUI库有:

Tkinter:Python标准库,简单易用

PyQt/PySide:功能强大,适合商业应用

wxPython:跨平台,原生外观

Kivy:适合移动端和触摸屏应用

Dear PyGui:现代轻量级GUI

1.2 开发环境准备

pip install tkinter pyside6 wxpython kivy dearpygui

二、10个GUI开发实战案例
案例1:Tkinter入门 - 计算器

import tkinter as tk

def calculate():
    try:
        result = eval(entry.get())
        entry.delete(0, tk.END)
        entry.insert(tk.END, str(result))
    except:
        entry.delete(0, tk.END)
        entry.insert(tk.END, "错误")

root = tk.Tk()
root.title("简易计算器")

entry = tk.Entry(root, width=25, borderwidth=5)
entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

buttons = [
    '7', '8', '9', '/',
    '4', '5', '6', '*',
    '1', '2', '3', '-',
    '0', 'C', '=', '+'
]

for i, text in enumerate(buttons):
    btn = tk.Button(root, text=text, padx=20, pady=20,
                   command=lambda t=text: button_click(t))
    btn.grid(row=1+i//4, column=i%4)

def button_click(text):
    if text == 'C':
        entry.delete(0, tk.END)
    elif text == '=':
        calculate()
    else:
        entry.insert(tk.END, text)

root.mainloop()

案例2:PyQt6 - 图片查看器

from PyQt6.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QWidget, QFileDialog
from PyQt6.QtGui import QPixmap

class ImageViewer(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    
    def initUI(self):
        self.setWindowTitle('图片查看器')
        self.layout = QVBoxLayout()
        
        self.label = QLabel('请选择图片')
        self.layout.addWidget(self.label)
        
        self.btn = QPushButton('打开图片')
        self.btn.clicked.connect(self.openImage)
        self.layout.addWidget(self.btn)
        
        self.setLayout(self.layout)
    
    def openImage(self):
        fname, _ = QFileDialog.getOpenFileName(self, '打开文件', 
                                              '', '图片文件 (*.jpg *.png)')
        if fname:
            pixmap = QPixmap(fname)
            self.label.setPixmap(pixmap.scaled(400, 400, 
                                             Qt.AspectRatioMode.KeepAspectRatio))

app = QApplication([])
viewer = ImageViewer()
viewer.show()
app.exec()

案例3:wxPython - 文本编辑器

import wx

class TextEditor(wx.Frame):
    def __init__(self):
        super().__init__(None, title='简易文本编辑器', size=(600, 400))
        
        panel = wx.Panel(self)
        self.text_ctrl = wx.TextCtrl(panel, style=wx.TE_MULTILINE)
        
        save_btn = wx.Button(panel, label='保存')
        save_btn.Bind(wx.EVT_BUTTON, self.on_save)
        
        open_btn = wx.Button(panel, label='打开')
        open_btn.Bind(wx.EVT_BUTTON, self.on_open)
        
        sizer = wx.BoxSizer(wx.VERTICAL)
        btn_sizer = wx.BoxSizer(wx.HORIZONTAL)
        
        btn_sizer.Add(save_btn, 0, wx.ALL, 5)
        btn_sizer.Add(open_btn, 0, wx.ALL, 5)
        
        sizer.Add(btn_sizer, 0, wx.EXPAND)
        sizer.Add(self.text_ctrl, 1, wx.EXPAND|wx.ALL, 5)
        
        panel.SetSizer(sizer)
    
    def on_save(self, event):
        with wx.FileDialog(self, "保存文件", wildcard="文本文件 (*.txt)|*.txt",
                          style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT) as dlg:
            if dlg.ShowModal() == wx.ID_OK:
                with open(dlg.GetPath(), 'w') as f:
                    f.write(self.text_ctrl.GetValue())
    
    def on_open(self, event):
        with wx.FileDialog(self, "打开文件", wildcard="文本文件 (*.txt)|*.txt",
                          style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) as dlg:
            if dlg.ShowModal() == wx.ID_OK:
                with open(dlg.GetPath(), 'r') as f:
                    self.text_ctrl.SetValue(f.read())

app = wx.App()
frame = TextEditor()
frame.Show()
app.MainLoop()

案例4:Kivy - 移动端天气应用

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
import requests

class WeatherApp(App):
    def build(self):
        self.layout = BoxLayout(orientation='vertical', spacing=10, padding=10)
        
        self.city_input = TextInput(hint_text='输入城市名', size_hint=(1, 0.1))
        self.layout.add_widget(self.city_input)
        
        self.search_btn = Button(text='查询天气', size_hint=(1, 0.1))
        self.search_btn.bind(on_press=self.get_weather)
        self.layout.add_widget(self.search_btn)
        
        self.weather_label = Label(text='天气信息将显示在这里', size_hint=(1, 0.8))
        self.layout.add_widget(self.weather_label)
        
        return self.layout
    
    def get_weather(self, instance):
        city = self.city_input.text
        if city:
            try:
                # 这里使用模拟数据,实际应用中应调用天气API
                weather_data = {
                    '北京': '晴,25°C',
                    '上海': '多云,23°C',
                    '广州': '阵雨,28°C'
                }
                result = weather_data.get(city, '未找到该城市天气信息')
                self.weather_label.text = f"{city}天气: {result}"
            except:
                self.weather_label.text = "获取天气信息失败"

WeatherApp().run()

案例5:Dear PyGui - 数据可视化仪表盘

import dearpygui.dearpygui as dpg
import random
import time

dpg.create_context()

def update_data():
    while dpg.is_dearpygui_running():
        time.sleep(1)
        dpg.set_value('temperature', random.randint(20, 30))
        dpg.set_value('humidity', random.randint(40, 80))
        dpg.set_value('pressure', random.randint(980, 1020))
        dpg.fit_axis_data('x_axis')
        dpg.fit_axis_data('y_axis_temp')
        dpg.fit_axis_data('y_axis_hum')

with dpg.window(label="环境监测仪表盘", width=800, height=600):
    with dpg.group(horizontal=True):
        with dpg.child_window(width=200):
            dpg.add_text("传感器数据")
            dpg.add_text("温度:")
            dpg.add_text("", tag="temperature")
            dpg.add_text("湿度:")
            dpg.add_text("", tag="humidity")
            dpg.add_text("气压:")
            dpg.add_text("", tag="pressure")
        
        with dpg.child_window(width=600):
            with dpg.plot(label="环境数据趋势", height=400, width=550):
                dpg.add_plot_legend()
                
                # x轴
                dpg.add_plot_axis(dpg.mvXAxis, label="时间", tag="x_axis")
                
                # y轴(温度)
                dpg.add_plot_axis(dpg.mvYAxis, label="温度(°C)", tag="y_axis_temp")
                dpg.add_line_series([], [], label="温度", parent="y_axis_temp", tag="temp_series")
                
                # y轴(湿度)
                dpg.add_plot_axis(dpg.mvYAxis, label="湿度(%)", tag="y_axis_hum")
                dpg.add_line_series([], [], label="湿度", parent="y_axis_hum", tag="hum_series")

dpg.create_viewport(title='环境监测仪表盘', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

(由于篇幅限制,这里只展示了前5个案例,完整文章应包含10个案例)

三、GUI开发进阶技巧
多线程处理:避免GUI界面卡顿

主题定制:美化界面外观

国际化支持:多语言切换

打包发布:使用PyInstaller打包为可执行文件

跨平台适配:处理不同操作系统的差异

四、总结
通过这10个实战案例,我们从简单的计算器到复杂的数据可视化仪表盘,逐步掌握了Python GUI开发的核心技能。建议读者:

从Tkinter开始入门,熟悉基本概念

根据项目需求选择合适的GUI库

多实践,参考官方文档和示例代码

关注用户体验,设计直观的界面

Python GUI开发是一个实践性很强的领域,希望本文能为你打开GUI开发的大门!

最后:
希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利
最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

在这里插入图片描述

超级实用 Python GUI 入门 有时候使用 python 做自动化运维操作,开发一个简单的应用程序非常方便。程序写好,每次都要通过命令行运行 python 程序,就不是那么人性化了。为了更方便的操作,使用 Python GUI 编写界面程序,方便后续程序的操作。本文基于:Tkinter 进行讲解从安装到打包,一站式完成一个应用打包。1. 定义样式数据在 Button 控件上使用 bg/fg 定义前景和背景色。使用 pack 布局定义 padding 的 x/y 两个方向。2. 使用 theme 统一主题3. 自定义控件样式。 阅读详情

相关推荐

PYTHON编程从入门到实践pdf,python编程从入门到精通

人与人交往用人类的语言,而人与计算机交互就需要用到计算机语言。与人类语言相比,计算机语言简单多了,只认“二进制”的操作指令。但是这种指令很难被大多数人学习和使用,因此,人们就发明了编程语言,通过这些语言和计算机进行沟通。而Python就是众多编程语言中的一种,深受编程人员的喜好和追捧。基础篇、进阶篇、高级篇、框架篇、游戏开发篇、人工智能开发篇和商业项目篇。

Bxwfjdjdbdgj的博客 1796

Python GUI开发(超长文)

Tkinter:Python的标准GUI库,内置于Python安装包中,无需额外安装。它提供了丰富的组件和控件,适合快速开发简单的GUI应用程序。wxPython:一个跨平台的GUI工具包,提供了丰富的本地化组件和控件,适合开发具有丰富功能的桌面应用程序。PyQt:基于Qt框架的Python绑定,提供了一套完整的GUI开发工具,支持高级图形效果和复杂的用户界面设计。PySide:Qt框架的另一个Python实现,与PyQt类似,但由Qt公司官方提供,保证了与Qt的兼容性。Kivy。

GRKF15的博客 7778

python入门到精通pdf微盘,python3.8从入门到精通pdf

1.Python基础教程 《Python基础教程》是经典的Python入门教程书籍,本书层次鲜明,结构严谨,特别是在最后几章中,作者将前面讲述的内容应用到项目中,并以模板的形式介绍了项目的开发过程,手把手教授Python开发,让读者从项目中领略Python的真正魅力。Python核心编程第三版(中文版) python核心编程第三版中文版PDF,python进阶教程,包含正则,网络编程,数据库编程,GUI,Django,爬虫,云计算假设等内容,实乃居家旅行,疯狂写码,必备良书……12.2.3 try。

wo319319521521的博客 1078

14. python从入门到精通——GUI编程

GUI(图形用户界面)三个基本要素:输入、处理、输出。

weixin_43812198的博客 9620

python从入门到精通第三版,python3.8从入门到精通pdf

大家好,小编为大家解答python3.8从入门到精通pdf百度云下载的问题。很多人还不知道python从入门到精通电子书下载,现在让我们一起来看看吧!

Fixf4556的博客 1699

Python图形用户界面(GUI)开发基础

本文主要介绍Python GUI开发的基础内容,包括GUI库的选择、GUI设计思路、GUI常用组件、GUI事件处理、GUI布局管理等内容。本文主要介绍了Python GUI开发的基础内容,包括GUI库的选择、GUI设计思路、GUI常用组件、GUI事件处理、GUI布局管理等内容。不同的GUI库具有不同的特点,根据实际需求选择不同的GUI库进行开发。在进行GUI设计时,首先需要确定GUI的结构和布局。当组件放置在窗口中时,pack会自动将它们放置在最上方,如果窗口的尺寸发生变化,组件的位置也会发生相应的变化。

吃不胖. 2764

Python24个实用案例,解析GUI编程从入门到精通!

分享一Python做GUI的一些小技巧,结合24个实用案例,让你也能轻松做出好看又好用的界面。

zhang120529的博客 1366

[Pytorch案例实践001]手写MNIST数字识别

Pytorch实现手写数字识别,带完整数据集。

2403_83044722的博客 1115

PythonGUI编程从入门到精通,24个实用案例解析

使用ttk设置样式最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

GLB_0627的博客 1333

HDMI2.1/eDP TX接口设计:

HDMI2.1向下兼容,HDMI2.1工作在FRL模式,HDMI2.0工作在TMDS模式。因此采用AC耦合电压模式驱动器。一般采用220nF,封装建议0201。,但是协议要求,往 CEC 管脚通过 27K 电阻加 3.3V 电压,漏电不允许超过。NOTE:如果只需要支持 HDMI2.0 及以下模式时, MOS管也不能省掉。DDC_SCL/DDC_SDA 协议规定是。HDMI2.0模式:配置为高,MOS导通。HDMI2.1模式:配置为低,MOS不导通。,必须增加电平转换电路。形成直流偏置,大约3V。

qq_40010777的博客 7859

数字蓝牙功放

数字蓝牙功放(TPA3110+BK8000L),基于D类数字功放芯片TPA3116蓝牙功放,HIFI级带滤波15Wx2蓝牙数字功放,支持有线和蓝牙两种音源输入

runweipa的博客 1419

Python GUI编程:从入门到精通

GUI是一种通过图形元素(如按钮、文本框、窗口等)与用户进行交互的方式。相对于命令行界面,GUI更直观、用户友好,适用于各种应用,从桌面软件到游戏。这篇文章分享了Python GUI编程的关键概念和主要工具包,通过实际的示例代码演示了使用tkinterPyQt5和wxPython创建任务管理器、图像查看器和文件资源管理器。在任务管理器中,利用tkinter的Treeview和Button组件创建了一个简单的任务列表,展示了基本的GUI应用构建。图像查看器通过PyQt5的和。

涛哥聊Python 2043

ST-Link V2的隐藏技能:多通道串口调试的终极指南

本文深入探讨了ST-Link V2的多通道串口调试功能,突破传统烧录工具的限制。通过详细的硬件配置、Arduino IDE设置和实战案例,展示了如何利用SWD接口实现多通道数据监控,提升STM32F103C8T6等开发板的调试效率。文章还提供了PCB布局优化和性能调优技巧,助力开发者充分发挥ST-Link V2的潜能。

weixin_29285605的博客 355

python编程:从入门到精通,python编程从入门到精通

大家好,小编来为大家解答以下问题,python编程:从入门到精通,python编程从入门到精通,现在让我们一起来看看吧!

K12345611717的博客 1016

prplOS amx-fxgi调试-订阅subscribe

本文分析了prplOS中amx-fxgi订阅功能(subscribe)的实现与调试过程。通过梳理订阅流程发现,默认订阅失败主要由于acl规则限制导致。文章详细介绍了订阅的两个关键步骤:建立GET长连接和POST设置订阅路径,并通过修改代码绕过acl验证成功实现订阅功能。最终验证了在同一连接下订阅多个路径及实时接收状态更新的可行性,有效降低了设备查询负载。该方案为prplOS的实时数据监控提供了优化思路。

四儿家的小祖宗的博客 330

《网络安全自学教程》- 防火墙原理分析与Windows防火墙使用配置

防火墙分类及原理,Windows开启防火墙,Windows防火墙添加策略,

wangyuxiang946的博客 1万+

深入理解 tkinter:Python GUI 编程入门到精通

tkinter 是 Python 的标准 GUI 库,它是 Tcl/Tk 脚本语言的 Python 接口。tkinter 提供了创建窗口、按钮、标签、文本框等各种 GUI 组件的功能,使开发者能够轻松创建跨平台的桌面应用程序。tkinter 是 Python 中一个强大且易用的 GUI 工具包,适合初学者和有经验的开发者。通过本文的学习,你已经掌握了 tkinter 的基础知识、事件处理、高级组件使用以及应用开发实战。随着不断的实践和学习,你可以开发出更加复杂和功能丰富的桌面应用程序。

博客简介 1729

一种基于机载LiDAR点云电力线自动提取方法

文章目录一、引言二、算法实现2.1实现步骤2.2实现代码 一、引言 二、算法实现 2.1实现步骤 (1)首先采用首先采用高程滤波方法去除地面点和低矮地物点,滤波后的点云数据中除电力线点云外还含部分杆塔点、高植被点和噪声点。 (2)根据点云空间维度特征提取电力线点,使用空间密度聚类的方法实现单根电力线精确分离。 2.2实现代码 在这里插入代码片 ...

dayuhaitang1的博客 5171

Python编程:从入门到精通

在本文中,我们深入研究了Python编程,从入门到精通。我们开始了解Python的基础知识,包括安装、变量、控制流、函数和模块。随后,我们探讨了高级主题,如面向对象编程、异常处理、文件操作、数据库操作、多线程和多进程、GUI编程、自动化和爬虫、版本控制、脚本和自动化任务以及Web框架的应用。

努力是为了站在万人之中,成为别人的光 5506

高匿反爬实战:Python打造无痕爬虫,规避风控系统追踪

网络层匿踪:核心是使用住宅IP代理池,按真实用户IP画像匹配,控制请求频率;协议层匿踪:动态生成请求头(每次都不同),参数添加随机噪声,避免规律化;行为层匿踪:模拟人类的非规律行为(贝塞尔轨迹、随机停顿、非精准点击);设备层匿踪:伪造Canvas/WebGL指纹,禁用webdriver标识,每次请求更换指纹;核心原则:无痕爬虫的本质是“无限接近真实用户”,所有维度都要消除爬虫特征,而非单一维度伪装。打造真正的无痕爬虫需要全维度的匿踪策略,单一维度的伪装极易被高级风控系统识别。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2642

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python编程从入门到精通pdf-Python从入门到精通 PDF 完整超清版

给大家带来的一篇关于Python入门相关的电子书资源,介绍了关于Python入门、Python精通方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小18.9 MB,明日科技编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.6。内容介绍《Python从入门到精通》从新手视角去往,根据浅显易懂的語言、多种多样的案例,详解了应用Python开展软件开发应当把握的各层面技术性。全书共有...

weixin_37988176的博客 7389

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python编程入门经典pdf下载,python编程入门到精通pdf

大家好,小编来为大家解答以下问题,python编程从入门到精通pdf网盘,python编程入门经典pdf下载,今天让我们一起来看看吧!大家好,小编来为大家解答以下问题,python编程入门经典pdf下载,python编程入门到精通pdf,现在让我们一起来看看吧!14.3.1 使用SocketServer实现分叉和线程化249。5.7.3 使用exec和eval执行字符串及计算其结果86。14.3.2 使用select和poll实现异步I O249。第 27章 项目8:使用XML-RPC共享文件401。

wangyanqin0227的博客 1052

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: 用Python爬取豆瓣电影Top250数据资源
下一篇: 2025超详细专业版PyCharm IDE安装环境配置完整版教程,看这一篇就足够了
Python_trys
博客等级 码龄2年 4369粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值