Python实战案例,PyQt5+socket模块,Python制作小型桌面应用

news2024/7/6 19:43:55

前言

本文给大家分享的是如何通过用PyQt5制作小型桌面应用

PyQt概述

PyQt5是Qt框架的Python语言实现,由Riverbank Computing开发,是最强大的GUI库之一。PyQt提供了一个设计良好的窗口控件集合,每一个PyQt控件都对应一个Qt控件,因此PyQt的API接口与Qt的API接口很接近,但PyQt不再使用QMake系统和Q_OBJECT宏。

PyQt5可以做这些桌面程序。

准备了Python 编写的 15 个小型桌面应用程序的合集,需要评论区留言获取

在这里插入图片描述

开发工具

**Python版本:**3.7

相关模块:

socket模块

time模块

sys模块

threading模块

PyQt5模块

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

Conda环境

建议安装anaconda集成环境,简称conda环境, 内部默认安装数据分析(Numpy/Pandas)、爬虫Scrapy框架、Web框架、PyQt等相关工具。

安装目录

drwxr-xr-x     3 apple  staff     96  2 25  2019 Anaconda-Navigator.app
drwxr-xr-x   449 apple  staff  14368 10 10 18:48 bin
drwxr-xr-x   269 apple  staff   8608  2 25  2019 conda-meta
drwxr-xr-x     3 apple  staff     96  2 25  2019 doc
drwxr-xr-x     9 apple  staff    288 11 26 14:40 envs
drwxr-xr-x     6 apple  staff    192  2 25  2019 etc
drwxr-xr-x   305 apple  staff   9760  5 17  2019 include
drwxr-xr-x   732 apple  staff  23424  2 25  2019 lib
drwxr-xr-x     5 apple  staff    160  2 25  2019 libexec
drwxr-xr-x     3 apple  staff     96  2 25  2019 man
drwxr-xr-x    68 apple  staff   2176  2 25  2019 mkspecs
-rw-rw-r--     1 apple  staff    745  2 25  2019 org.freedesktop.dbus-session.plist
drwxr-xr-x    15 apple  staff    480  2 25  2019 phrasebooks
drwxr-xr-x  1086 apple  staff  34752  9 29 18:05 pkgs
drwxr-xr-x    25 apple  staff    800  2 25  2019 plugins
drwxr-xr-x     3 apple  staff     96  2 25  2019 python.app
drwxr-xr-x    27 apple  staff    864  2 25  2019 qml
drwxr-xr-x     7 apple  staff    224  2 25  2019 resources
drwxr-xr-x    14 apple  staff    448  2 25  2019 sbin
drwxr-xr-x    25 apple  staff    800  2 25  2019 share
drwxr-xr-x     9 apple  staff    288  2 25  2019 ssl
drwxr-xr-x   290 apple  staff   9280  2 25  2019 translations

在 bin目录下,存在一个Designer.app应用是PyQt的Designer设计器。文件的扩展名是.ui。
因为Conda安装之后,默认是base环境,所以可以使用Coda命令创建新的开发环境:

conda create -n gui python=python3.7

激活环境

conda activate gui

安装pyqt5

(gui) > pip install pyqt5==5.10

如果安装的PyQt5版本高于5.10,部分库将要单独安装,如WebEngine

(gui) > pip install PyQtWebEngine

PyQt5+Socket实现中心化网络服务

服务器端(完整代码)

import json
import socket
import threading
import time
from data import DataSource


class ClientThread(threading.Thread):
    def __init__(self, client, addr):
        super(ClientThread, self).__init__()
        self.client = client
        self.addr = addr

        self.login_user = None

        print('{} 连接成功!'.format(addr))
        self.client.send(b'OK 200')

    def run(self) -> None:
        while True:
            b_msg = self.client.recv(1024*8) # 等待接收客户端信息
            if b_msg == b'exit':
                break

            # 解析命令
            try:
                self.parse_cmd(b_msg.decode('utf-8'))
            except:
                self.client.send(b'Error')

        self.client.send(b'closing')
        print('{} 断开连接'.format(self.addr))

    def parse_cmd(self, cmd):
        print('接收命令-----', cmd)
        if cmd.startswith('login'):
            # login username pwd
            _, name, pwd = cmd.split()
            for item in datas:
                if item['name'] == name and item['pwd'] == pwd:
                    self.login_user = item

            if self.login_user is not None:
                self.client.send(b'OK 200')
            else:
                self.client.send(b'not exist user')
        else:
            if self.login_user is None:
                self.client.send(b'no login session')

            elif cmd.startswith('add'):
                # add 100
                blance = float(cmd.split()[-1])
                self.login_user['blance'] += blance
                self.client.send(b'OK 200')
            elif cmd.startswith('sub'):
                # sub 100
                blance = float(cmd.split()[-1])
                self.login_user['blance'] -= blance
                self.client.send(b'OK 200')
            elif cmd.startswith('get'):
                self.client.send(json.dumps(self.login_user, ensure_ascii=False).encode('utf-8'))


if __name__ == '__main__':

    datas = DataSource().load()

    # 创建socket应用服务
    server = socket.socket()
    server.bind(('localhost', 18900))  # 绑定主机IP和Host
    server.listen()

    print('中心服务已启动\n等待客户端连接...')
    while True:
        client, addr = server.accept()
        ClientThread(client, addr).start()

        time.sleep(0.5)

客户端(完整代码)

import socket
import threading


class CenterClient():
    def __init__(self, server, port):
        super().__init__()
        self.server = server
        self.port = port
        self.isConnected = False
        self.client = None

    def connect(self):
        self.client = socket.socket()
        self.client.connect((self.server, self.port))
        msg = self.client.recv(8*1024)
        if msg == b'OK 200':
            print('---连接成功--')
            self.isConnected = True
        else:
            print('---连接失败---')
            self.isConnected = False

    def send_cmd(self, cmd):
        self.client.send(cmd.encode('utf-8'))
        data = self.client.recv(8*1024)
        print('{}命令结果: {}'.format(cmd, data))
        if data == b'Error':
            return '400'
        return data.decode('utf-8')


if __name__ == '__main__':
    client = CenterClient('localhost', 18900)
    client.connect()
    print(client.send_cmd('login disen disen123'))
    # print(client.send_cmd('add 1000'))
    # print(client.send_cmd('sub 50'))
    print(client.send_cmd('get'))


最后

为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。

里面有适合小白新手的全套资料给到大家~

快来和小鱼一起成长进步吧!

① 100+多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 爬虫项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

素材

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js实现的在线绘图板,写字板

一个像素完美的基于web的MS Paint重制版和更多…试试看! JS Paint高度逼真地再现了MS Paint的每个工具和菜单,甚至是鲜为人知的功能。 它支持主题、其他文件类型和辅助功能,如眼睛注视模式和语音识别。 在线demo地址在线绘图板,在…

CorelDRAW破解版是如何一步一步坑人的

如果你还在说破解版软件免费好用,那我真的要用一个朋友的例子和你讲讲破解版CorelDRAW的害人之处了。 小赵是我的朋友学设计的,学生党一枚苦于囊中羞涩经常上破解版的车。一次他接了一个设计LOGO的活儿,准备用CorelDRAW来做这个LOGO。于是从…

web安全之post注入和cookie注入

目录 环境 靶场11(POST注入) 靶场20(cookie注入) 环境 靶场:sqli-labs,工具:burp 靶场11(POST注入) 抓包修改请求体 uname-1 union select 1,2 #&passwd&s…

2023年天津仁爱学院高职升本科专业考试报考须知

2023年天津仁爱学院高职升本科专业考试报考须知 一、报名条件 1.报考我校2023年高职升本科各专业的考生,应符合天津市教育招生考试院制定的2023 年天津市高职升本科及我校专业考试有关报考条件,须完成2023年天津市高职升本科文化考试报名相关手续&#x…

【Web端智能聊天客服】之HTML、CSS、Bootstrap的讲解及实例(超详细必看 附源码)

觉得有帮助请点赞关注收藏~~~ 一、HTML基础 HTML全称是HyperText Markup Language 是网页的标准标记语言,使用HTML可以创建自定义网站或者模板网站,HTML代表超文本标记语言,主要用于描述网页结构,HTML页面元素体现浏览器如何显示…

商业智能BI在面向报表和模型开发时,有什么不同?

企业在面试商业智能BI技术开发人员,发现基本上90%的人分不清什么是面向报表开发,什么是面向模型开发,不明白这个问题背后的意思。10%左右的人稍微暗示一下,大概就懂你想了解的是什么了,这10%的是真正有过完整的数据仓库…

我是如何开始能写python爬虫的?给零基础入门Python小白一条清晰的学习路线

重要的事说三遍:不要从看书开始,不要从看书开始,不要从看书开始!~~ 爬虫这么有意思的东西,看书多没有乐趣,从网上找个视频,直接跟着写,然后再根据视频,按照自己的想法写…

Polaris 和 dubbogo 全面对接,让微服务更简单

作者 | 邓正威,廖春涛(春少),赵新(花名 于雨)背景概述什么是 PolarisPolaris 是腾讯开源的服务治理平台,致力于解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问…

公路交叉数(POJ3067)-树状数组解决逆序对

题目大意: 东海岸有N个城市,西海岸有M个城市(N≤1000,M≤1000),将建K条公路。每个海岸的城市从北到南编号为1,2,…每条高速公路都是直线,连接东海岸和西海岸的城市。建设资金由高速公…

各开发语言DNS缓存配置建议

作者:翟贺龙 一、背景 在计算机领域,涉及性能优化动作时首先应被考虑的原则之一便是使用缓存,合理的数据缓存机制能够带来以下收益: 1.缩短数据获取路径,热点数据就近缓存以便后续快速读取,从而明显提升…

小侃设计模式(十六)-备忘录模式

1.概述 备忘录模式(Memento Pattern)是一种行为型模式,它的主要思想是在不破坏封装性的前提下,捕获一个对象的内部状态,并将该状态保存在该对象之外,这样以后就可将该对象恢复到原先保存的状态。它是相对简…

【项目问题】程序里,oracle相关的内容,为什么有些能显示表有些不能显示表,但是用oracle工具就可以看到所有表

运行过程中的问题客户提出问题找一下原因问题找到了那如何解决这个看不到的问题呢客户提出问题 1、oracle数据源链接成功了,但是在产品使用过程中发现,没有表,空空如也 找一下原因 先看一下用户:zd202207 2、再去看看数据库工…

效率倍增!5款超级好用的Python工具库!

Python 是一门简单易学却功能非常强大的语言。好玩实用的工具层出不穷,也给我们的工作生活带来极大的方便。在之前文章中我已多次分享过一些实用的工具,有兴趣的可以翻阅一下,今天我再分享 5 款非常实用的工具: LuxTranslatorsTextShotFancy…

C规范编辑笔记(六)

往期文章: C规范编辑笔记(一) C规范编辑笔记(二) C规范编辑笔记(三) C规范编辑笔记(四) C规范编辑笔记(五) 正文: 今天我们继续来分享一下我们C规范编辑笔记第六篇~ 话不多说,我们直接来看: 1、 结构体变量不得在未指定初始化…

华为云大数据BI 为中小型企业智慧运营保驾护航

华为云大数据BI 为中小型企业智慧运营保驾护航 企业数字化转型中,必然面临信息数据潜在价值变现的问题,在解决这一问题的途中,企业可能面临多种困难,尤其是信息数据分析,这直接关系到企业能否实现潜在价值变现。对于小…

[附源码]Python计算机毕业设计Django疫情管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

chrome新特性-recorder

chrome新特性-recorder一、简介二、录制三、录制回放1.Chrome DevTool工具2.Puppeteer脚本(1) 介绍(2) 使用一、简介 recorder 与Selenium IDE浏览器插件类似,可用于自动化测试及脚本生成(Puppeteer脚本);前者为Web自动化测试框架Selenium的配套浏览器插件支持Java、…

一文学会所有Web应用安全知识点

据调查大部分网络安全事故是软件缺陷导致的网络攻击。由于应用程序代码漏洞和安全漏洞,我们的企业正在遭受越来越多的攻击。调查显示攻击者可以通过盗用凭证,攻击10个测试过的web应用程序中的9个,进行恶意软件注入以及网络钓鱼攻击。因此&…

QuTrunk与MindSpore量子神经网络初探

QuTrunk是启科量子开发和已经开源的一款量子编程框架软件产品,关于QuTrunk的详细介绍,用户可以访问启科的开发者社区站点详细了解,也可以进入github上此项目下进行查询。 QuTrunk开发框架是可以与第三方AI框架深度结合进行量子计算程序开发的…

安装 Unity 个人免费版

安装 Unity 个人免费版 正版是需要收费的,所以我们个人开发使用个人免费版就可以 一、下载Unity 1.打开unity官网 点击”下载Unity" 官网 https://unity.cn/releases 2.下拉,会有各种版本,进入Unity的下载页面,找到对应的版…