当前位置: 首页 > news >正文

Pyside6 安装和简单界面开发

Pyside6 安装和简单界面开发

  • Pyside6介绍
  • Pysied6开发环境搭建
    • Python安装
    • Pysied6安装
  • Pyside6界面开发
  • 简单界面设计
    • 界面设计
    • 界面编译
  • 编写界面初始化代码
  • 软件打包

Pyside6介绍

对于Python的GUI开发来说,Python自带的可视化编程模块的功能较弱,PySide是跨平台应用程序框架Qt的Python绑定,Qt是跨平台C++图形可视化界面应用开发框架,自推出以来深受业界盛赞。PySide由Qt公司自己维护,允许用户在Python环境下利用Qt开发大型复杂GUI。用Python简洁的语法调用PySide6的各种可视化控件的类,可以快速搭建用户的图形界面,PySide6开发的GUI程序可以运行在所有主要操作系统上。

Pysied6开发环境搭建

Python安装

Pyside6是利用Python语言进行开发的GUI,所以在使用Pyside6前要先安装Python环境。可以到Python的官网https://www.python.org下进行下载并安装。目前最新的Python版本为3.12.0。
在这里插入图片描述
安装好Python开发环境后,我们打开Windows的命令行工具,输入"python",如果可以进入Python命令行,则代表Python安装成功。
在这里插入图片描述

Pysied6安装

Python下的软件安装非常简单,都是输入pip install xxx就可以安装所需的软件。打开命令行工具,输入以下命令:
pip install Pyside6 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
即可安装Pyside6。
Pyside6安装好之后,可以通过以下命令查看Pyside6的版本号
在这里插入图片描述

Pyside6界面开发

Pyside6的界面设计有两种设计方式,一种是手动设计,一种是利用Pyside6的designer模式进行设计,为了提高开发效率,通常都是使用designer模式进行开发。
打开命令行工具,输入pyside6-designer即可打开designer界面。
designer设计界面如下
在这里插入图片描述
我们可以选择文件->新建->选择"Main Window",创建我们的主窗口
在这里插入图片描述
设计界面可以分为以下几个区域
在这里插入图片描述

  • 工具栏:包含设计界面的一些基本操作,比如创建界面、保存界面等。
  • 组件选择区:包含Pyside6提供的GUI的组件。
  • 工作区:界面的设计区域,可以放置控件、调整窗口等
  • 对象查看区:查看界面里面包含有多少控件,查看控件之间的关系
  • 属性设置区:可以设置控件的属性,比如控件的名字,布局位置,大小等。

简单界面设计

界面设计

下面就利用designer模式来设计一个简单的界面。
首先我们拖拽一个Label控件到主界面
在这里插入图片描述
然后双击窗口中Label控件,将Label控件的文本修改为"Hello Pyside6"。也可以通过控件的属性栏进行修改。
在这里插入图片描述
在这里插入图片描述

界面编译

界面设计好之后,将界面保存为hello.ui,名字可以自己选择。如果此时打开hello.ui文件进行查看,会发现designer软件保存的是XML的代码,显然这种代码是不能被Python识别,所以我们还需要对保存的ui文件进行编译。

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>600</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"><widget class="QLabel" name="label"><property name="geometry"><rect><x>340</x><y>260</y><width>101</width><height>16</height></rect></property><property name="text"><string>Hello Pyside6</string></property></widget></widget><widget class="QMenuBar" name="menubar"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>22</height></rect></property></widget><widget class="QStatusBar" name="statusbar"/></widget><resources/><connections/>
</ui>

在命令行输入pyside6-uic hello.ui -o hello.py,这句话的意思是将hello.ui文件编译成hello.py文件。此时再打开hello.py文件进行查看,就会发现ui文件已经转化成能被Python识别的文件。

# -*- coding: utf-8 -*-################################################################################
## Form generated from reading UI file 'hello.ui'
##
## Created by: Qt User Interface Compiler version 6.4.1
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,QMetaObject, QObject, QPoint, QRect,QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,QFont, QFontDatabase, QGradient, QIcon,QImage, QKeySequence, QLinearGradient, QPainter,QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QLabel, QMainWindow, QMenuBar,QSizePolicy, QStatusBar, QWidget)class Ui_MainWindow(object):def setupUi(self, MainWindow):if not MainWindow.objectName():MainWindow.setObjectName(u"MainWindow")MainWindow.resize(800, 600)self.centralwidget = QWidget(MainWindow)self.centralwidget.setObjectName(u"centralwidget")self.label = QLabel(self.centralwidget)self.label.setObjectName(u"label")self.label.setGeometry(QRect(340, 260, 101, 16))MainWindow.setCentralWidget(self.centralwidget)self.menubar = QMenuBar(MainWindow)self.menubar.setObjectName(u"menubar")self.menubar.setGeometry(QRect(0, 0, 800, 22))MainWindow.setMenuBar(self.menubar)self.statusbar = QStatusBar(MainWindow)self.statusbar.setObjectName(u"statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QMetaObject.connectSlotsByName(MainWindow)# setupUidef retranslateUi(self, MainWindow):MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))self.label.setText(QCoreApplication.translate("MainWindow", u"Hello Pyside6", None))# retranslateUi

可以看到如果我们不使用designer软件进行界面的设计,我们就需要自己编写界面代码,这样就降低了开发效率,使用designer不仅可以加快开发效率,而且设计出来的界面也更美观。

编写界面初始化代码

有了上面的界面设计代码还不够,我们还需要编写界面的初始化代码,把界面进行实例化并显示。

# Import Qt libraries
from PySide6.QtWidgets import *
from PySide6.QtCore import QFile
# Import UI developed in Qt Creator
from hello import Ui_MainWindow  # 导入界面
# Import PseudoSensor
# Import system tools and datetime
import sys
import statistics
import time
from datetime import datetime# Create and start the Qt application
class MainWindow(QMainWindow):def __init__(self):super(MainWindow, self).__init__()# 设置界面为用户设计的界面self.ui = Ui_MainWindow() self.ui.setupUi(self) def closeAndExit(self):sys.exit()if __name__ == "__main__":app = QApplication(sys.argv) # 初始化QApplication# 初始化界面并显示界面window = MainWindow() window.show() sys.exit(app.exec())

将上面的程序保存为mainui.py文件,文件名可以自己选择,并把文件放到与hello.py相同的目录下,运行mainui.py文件,就可以将设计的界面显示出来。
在这里插入图片描述

软件打包

界面调试完成后,我们需要对软件进行打包,将软件打包成exe文件。
我们需要在命令行输入pip install pyinstaller进行打包软件的安装。安装完成后输入pyinstaller.exe -F -w .\mainui.py -i .\pack.ico -n hello.exe
pyinstaller.exe的参数如下

  • -F, --onefile 打包一个单个文件,如果你的代码都写在了一个py文件的话,可以使用这个命令,如果是多个py文件,就别用;
  • -D, --onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架的形式编写工具代码,代码易于维护;
  • -a, --ascii 不包含unicode编码的支持(包括默认值:如果可用)
  • -c, --console 使用控制台子系统执行(默认),只对windows有效
  • -w, --windowed, --noconsole 使用windows子系统执行,当程序启动的时候不会打开命令行(只对windows有效)
  • -i , --icon=<File.ico>将file.ico添加为打包的exe文件的图表,只对windows系统有效
  • –icon=<File.exe,n>将file.exe的第n个图标添加为可执行文件的资源,只对windows系统有效
  • -n Name,–name=Name 可选的项目,生成的.spec文件的名字和exe名字
  • -p 设置导入路径(和使用PYTHONPATH效果相似),可以使用路径分隔符(windows使用分好,linux使用冒号),制定多个目录的时候可以指定多个-p参数来设置,让pyinstaller自己去找程序的资源
  • –key KEY 用于加密Python字节码的密钥
  • –add-data 可以将一些非二进制文件添加到exe文件中进行打包,参数为格式为static;static
  • –distpath 指定打包后的程序存放目录,exe文件默认存放在当前目录下的dist目录中
  • –workpath 为输出的所有临时文件指定存放目录,默认为当前目录下的build目录

在这里插入图片描述
至此一个简单的Pyside6界面就设计完成了。

相关文章:

Pyside6 安装和简单界面开发

Pyside6 安装和简单界面开发 Pyside6介绍Pysied6开发环境搭建Python安装Pysied6安装 Pyside6界面开发简单界面设计界面设计界面编译 编写界面初始化代码软件打包 Pyside6介绍 对于Python的GUI开发来说&#xff0c;Python自带的可视化编程模块的功能较弱&#xff0c;PySide是跨…...

python读取vivo手机截图,将满屏图片文件移动别的路径

问题之初 python读取vivo手机截图&#xff0c; 将满屏图片文件移动别的路径好多这样的图片&#xff0c;占用手机大量的内存&#xff0c;食之无味弃之可惜&#xff01;那么会复制粘贴&#x1f440;代码的我们我们今天就把这些图片筛选清理掉。 这段代码 原有逻辑的基础上&…...

【一周安全资讯1007】多项信息安全国家标准10月1日起实施;GitLab发布紧急安全补丁修复高危漏洞

要闻速览 1.以下信息安全国家标准10月1日起实施 2.GitLab发布紧急安全补丁修复高危漏洞 3.主流显卡全中招&#xff01;GPU.zip侧信道攻击可泄漏敏感数据 4.MOVEit漏洞导致美国900所院校学生信息发生大规模泄露 5.法国太空和国防供应商Exail遭黑客攻击&#xff0c;泄露大量敏感…...

2023年09月个人工作生活总结

本文为 2023 年 9 月工作生活总结。 研发编码 Alpine 容器 某工程部署于alpine镜像&#xff0c;当初看上是因为其体积小&#xff0c;其它微服务&#xff0c;在250MB左右&#xff0c;但那个工程只用50MB。最近发现时间戳转换不正确。对于同一时间字符串转时间戳函数&#xff0…...

现货白银图表分析的依据

现货白银的行情图表分析其实与股票的差不多&#xff0c;投资者可以结合均线、k线的变化&#xff0c;来分析实时的行情走势。当走势图的均线呈多头排列&#xff0c;即短期、中期、长期均线依次从上到下排列并向右上方运行&#xff0c;且白银价格沿各均线向右上方拉升&#xff0c…...

python多线程与多进程

多线程与多进程 一, 什么是进程, 什么是线程? ​ 进程: 运行中的程序. 每次我们执行一个程序, 咱们的操作系统对自动的为这个程序准备一些必要的资源(例如, 分配内存, 创建一个能够执行的线程. ) ​ 线程: 程序内, 可以直接被CPU调度的执行过程. 是操作系统能够进行运算调度…...

62从零开始学Java之时间相关的类都有哪些?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们在开发时&#xff0c;除了数字、数学这样的常用API之外&#xff0c;还有日期时间类&#xff0c;更…...

2023年山东安全员c证考试题库及答案解析来了!

...

【Leetcode】买卖股票系列

121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔…...

SLAM面试笔记(8) — 计算机视觉面试题

目录 问题1&#xff1a;目标检测的算法分类 问题2&#xff1a;卷积神经网络的组成 问题3&#xff1a;输入层的作用 问题4&#xff1a;卷积层作用 问题5&#xff1a;卷积核类型 问题6&#xff1a;11卷积核作用 问题7&#xff1a;卷积核是否越大越好 问题8&#xff1a;棋…...

聊聊MySQL面试常问名词回表、索引覆盖,最左匹配

文章目录 1. 前言2. 回表操作 Index Lookup2.1 什么是回表2.2 回表的成本2.3 如何避免回表 3. 索引覆盖 Covering Index3.1 什么是索引覆盖3.2 索引覆盖的优点3.3 如何使用索引覆盖 4. 最左匹配原则&#xff08;Leftmost Prefix Match&#xff09;4.1 什么是最左匹配原则4.2 最…...

【面试】C/C++面试八股

C/C面试八股 编译过程的四个阶段C和C语言的区别简单介绍一下三大特性多态的实现原理虚函数的构成原理虚函数的调用原理虚表指针在什么地方进行初始化的&#xff1f;构造函数为什么不能是虚函数为什么建议将析构函数设为虚函数虚函数和纯虚函数的区别抽象类类对象的对象模型内存…...

学习记忆——数学篇——算术——无理数

谐音记忆法 2 \sqrt{2} 2 ​≈1.41421&#xff1a;意思意思而已&#xff1b;意思意思&#xff1b; 3 \sqrt{3} 3 ​≈1.7320&#xff1a;—起生鹅蛋&#xff1b;一起生儿&#xff1b; 5 \sqrt{5} 5 ​≈2.2360679&#xff1a;两鹅生六蛋(送)六妻舅&#xff1b;儿儿生&#xf…...

python协程和任务

协程概念引入 ​ 协程是我要重点去讲解的一个知识点. 它能够更加高效的利用CPU. ​ 其实, 我们能够高效的利用多线程来完成爬虫其实已经很6了. 但是, 从某种角度讲, 线程的执行效率真的就无敌了么? 我们真的充分的利用CPU资源了么? 非也~ 比如, 我们来看下面这个例子. 我们…...

visual studio code配置anaconda3的python虚拟环境

参考&#xff1a; Visual Studio Code配置anconda3虚拟环境 - 知乎...

【Unity3D编辑器开发】Unity3D编辑器开发基础性框架结构【全面总结】

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 嗨&#xff0c;大家好&#xff0c;我是恬静的小魔龙。 同学们…...

一座“城池”:泡泡玛特主题乐园背后,IP梦想照亮现实

“更适合中国宝宝体质”的主题乐园&#xff0c;被泡泡玛特造出来了。 9月26日&#xff0c;位于北京朝阳公园内的国内首个潮玩行业沉浸式 IP 主题乐园&#xff0c;也是泡泡玛特首个线下乐园——泡泡玛特城市乐园 POP LAND正式开园。 约4万平方米的空间中&#xff0c;泡泡玛特使…...

【什么是闭包? 闭包产生的原因? 闭包有哪些表现形式?】

JS闭包 什么是闭包&#xff1f;闭包产生的原因?闭包有哪些表现形式? 什么是闭包&#xff1f; 闭包是指一个函数可以访问并操作在其作用域之外的变量的能力。在 JavaScript 中&#xff0c;每当函数被创建时&#xff0c;就会创建一个闭包。 以下是一个简单的闭包示例&#xf…...

JackJson和FastJson

前言&#xff1a; fastjson是一款强大的json格式转换工具&#xff0c;我个人在开发中就非常喜欢用fastjson&#xff1b;但是由于某些原因&#xff0c;导致fastjson会有一些漏洞&#xff0c;因此在漏洞扫描后需要修复都是要求我们升级版本&#xff0c;或者替换为jackjson&#…...

SpringCloud学习一

单体应用存在的问题 随着业务的发展&#xff0c;开发变得越来越复杂。 修改、新增某个功能&#xff0c;需要对整个系统进行测试、重新部署。 一个模块出现问题&#xff0c;很可能导致整个系统崩溃。 多个开发团队同时对数据进行管理&#xff0c;容易产生安全漏洞。 各个模块…...

lt6211与lt6211c的HDMI转LVDS源

lt6211,lt6211c&#xff0c;hdmi转lvds源LT6211这颗芯片在嵌入式显示领域算是老熟人了&#xff0c;最近项目中用到了它的升级版LT6211C实现HDMI转LVDS功能。这玩意儿看着简单&#xff0c;实际调试时总有些小坑得填。今天咱们就聊聊怎么用寄存器配置让它的LVDS输出稳定如狗。硬件…...

【UE5】深入解析Dedicated Server专用服务器的网络同步机制与实战优化

1. UE5专用服务器基础概念解析 第一次接触UE5专用服务器(Dedicated Server)时&#xff0c;我完全被各种专业术语绕晕了。经过几个项目的实战后&#xff0c;我发现理解它的本质其实很简单——就像餐厅里的服务员与顾客的关系。服务器就是那个永远在后台忙碌的服务员&#xff0c;…...

VMware ESXi上玩转Proxmox VE:手把手教你搭建家庭虚拟化实验室(含OpenWrt配置)

VMware ESXi与Proxmox VE的融合实践&#xff1a;打造高性能家庭虚拟化平台 在家庭技术爱好者的世界里&#xff0c;搭建一个功能强大且灵活的虚拟化环境已经成为一种趋势。将VMware ESXi与Proxmox VE这两种优秀的虚拟化平台结合起来&#xff0c;不仅能充分利用现有硬件资源&…...

【GitHub项目推荐--Carbonyl:终端里的 Chromium 图形浏览器】⭐⭐⭐⭐⭐

简介 Carbonyl​ 是一个基于 Chromium 引擎、专为终端&#xff08;Terminal&#xff09;环境构建的开源图形浏览器。它并非 Lynx 那样的纯文本浏览器&#xff0c;而是通过 Unicode 块字符和 ANSI 颜色&#xff0c;将网页以像素级图形的方式渲染在命令行窗口中。该项目最初源于…...

Vue3-DateTime-Picker:如何让Vue 3应用的时间选择变得简单又优雅?

Vue3-DateTime-Picker&#xff1a;如何让Vue 3应用的时间选择变得简单又优雅&#xff1f; 【免费下载链接】vue3-date-time-picker Datepicker component for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-date-time-picker 你是否曾经在开发Vue应用时&…...

Comsol瓦斯抽采:多物理场耦合的奇妙探索

comsol瓦斯抽采 该案例涉及有效应力场&#xff0c;瓦斯渗流场等多物理场耦合。 包括钻孔瓦斯抽采模型&#xff0c;热流固耦合模型&#xff0c;顺层瓦斯抽采模型&#xff0c;注氮驱替瓦斯模型&#xff0c;水力压裂模型&#xff0c;三轴裂隙岩体渗流应力耦合&#xff0c;采空区瓦…...

揭秘抖音批量采集神器:从技术内核到实战突破

揭秘抖音批量采集神器&#xff1a;从技术内核到实战突破 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容创作与研究的浪潮中&#xff0c;抖音作为全球最大的短视频平台&#xff0c;其丰富的内容资…...

Python服务OOM频发真相:20年C Python内核开发者首曝智能体内存管理策略架构图(含perf+eBPF验证数据)

第一章&#xff1a;Python智能体内存管理策略架构总览Python智能体的内存管理并非简单复用CPython的引用计数与垃圾回收机制&#xff0c;而是构建在多层级抽象之上的协同式策略体系。该体系需同时满足短期对话上下文缓存、长期知识图谱嵌入存储、跨会话记忆检索以及隐私敏感数据…...

Qwen3.5-35B-A3B-AWQ-4bit图文对话教程:如何利用上下文长度4096做长图分析

Qwen3.5-35B-A3B-AWQ-4bit图文对话教程&#xff1a;如何利用上下文长度4096做长图分析 1. 引言&#xff1a;当AI学会“看图说话” 想象一下&#xff0c;你拿到一张复杂的流程图、一张信息密集的仪表盘截图&#xff0c;或者一张包含大量文字和图表的长图。你不仅想知道图上有什…...

requests - 简单好用的HTTP请求库

一、什么是requests&#xff1f; requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你&#xff1a; 轻松发送GET、POST、PUT、DELETE等请求处理Cookie、会话等复杂性自动解压缩内容处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景&#xff1a;…...