Python图形界⾯框架PySide6使⽤及避坑指南
使⽤Python开发图形界⾯的软件其实并不多,相对于GUI界⾯,可能Web⽅式的应⽤更受⼈欢迎。但基于GUI做⼀些⼩⼯具,还是很实⽤的。
在界⾯⼯具中,PySide6功能强⼤,与Pycharm相结合,可以满⾜各种变态与正常的需求。
PySide6的界⾯⽬前为两种,⼀种是传统的QT Widgets,另⼀种是相对新颖的QML。
本⽂演⽰了PySide6 的安装、配置、以天⽓预报⽰例演⽰了开发流程,对期间碰到的问题进⾏了梳理和总结。
环境信息是:Win10、PyCharm 2020.1、PySide6 6.2.2.1、PyInstaller 4.8、Python 3.7,基于QT Widgets设置图形界⾯。
安装PySide6
安装PySide6
Qt是⼀个跨平台的C++图形界⾯应⽤程序框架。
python代码画图案
它提供给开发者建⽴图形⽤户界⾯所需的功能,⼴泛⽤于开发GUI程序,也可⽤于开发⾮GUI程序。
Qt很容易扩展,并且允许真正地组件编程。
基本上,Qt同X Window上的Motif,Openwin,GTK等图形界⾯库以及Windows平台上的MFC、OWL、VCL、ATL是同类型的东西。
PySide6是来⾃于Qt for Python项⽬的官⽅Python模块,它提供了对完整Qt 6.0+框架的访问。
Qt Designer 拖拽式的界⾯设计⼯具:通过拖拽的⽅式放置控件,并实时查看控件效果进⾏快速UI设计
PyUIC:主要是把Qt Designer⽣成的.ui⽂件换成.py⽂件
PyRCC主要是把编写的.qrc资源⽂件换成.py⽂件
pip install PySide6
安装的是最新版:6.2.2.1,已经包含了Qt Designer、PyUIC、PyRCC⼯具
PyCharm中配置External Tools
在 PyCharm中的External Tools中,配置下图的三个⼯具。
配置QtDesigner
Name: QtDesigner
Program : D:\program\Anaconda3\ # 请根据实际修改Working directory: $ProjectFileDir$
配置PyUIC
Name: PyUIC
Program : D:\program\Anaconda3\ # 请根据实际修改
Arguments:$FileName$ -o $FileNameWithoutExtension$.py
Working directory: $FileDir$
配置PyRCC
Name: PyRCC
Program : D:\program\Anaconda3\ # 请根据实际修改
Arguments:$FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory: $FileDir$
使⽤⽰例
使⽤PySide6开发⼀个天⽓预报查询页⾯,通过选择⼴东不同的地市,查询不同地市的天⽓预报信息。
代码结构如下:
使⽤QtDesigner进⾏界⾯设计
整个画⾯的构成:
左侧的“Widget Box”就是各种可以⾃由拖动的组件
中间的“MainWindow – weather.ui”窗体就是画布
右上⽅的”Object Inspector”可以查看当前ui的结构系统数据库设计文档
右侧中部的”Property Editor”可以设置当前选中组件的属性
右下⽅的”Resource Browser”可以添加各种素材,⽐如图⽚,背景等等
最终⽣成.ui⽂件(实质上是XML格式的⽂件),可直接使⽤,也可以通过PyUIC⼯具转换成.py⽂件。
本⽰例⽤到的控件有Button, GroupBox, Label,ComboBox,TextEdit,同时定义了两个按钮searchBtn及clearBtn,分别⽤来查询及清空天⽓数据:
针对按钮设置信号/槽,也可以不设置,⽣成python代码后在代码中添加。
在Qt Designer右下⾓选择 信号/槽编辑器,点击+号新增
分别选择searchBtn及clearBtn,选择信号 clicked(), 接收者 QtWeather 及槽【内置了⼀些常⽤的槽函数,如
close,repaint,hide】,(槽函数这⾥不知道如何定义,后期在代码⾥再进⾏修改)
设置完成后,保存为weather.ui⽂件。
转换.ui⽂件为.py⽂件
为了更好的⾃定义及修改上⾯的槽函数,可以选择weather.ui,然后右键打开External Tools – PyUIC,即可⽣成weather.py,实际运⾏命令如下:
D:\program\Anaconda3\ weather.ui -o weather.py
绑定槽函数
设置两个按钮绑定的槽函数
self.t(QtWeather.queryWeather)
self.t(QtWeather.clearText)
设置下拉列表内容
详见weather.py代码
将selectBox下拉列表选择设置为⼴东的21个地市,并且默认选择第三个。
# -*- coding: utf-8 -*-
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ## Form generated from reading UI file 'weather.ui'
## Created by: Qt User Interface Compiler version 6.2.2
## WARNING! All changes made in this file will be lost when recompiling UI file!
>>>>>>>>>>>>>>>> from PySide6.QtCore import(QCoreApplication, QMetaObject, QRect,
Qt)
from PySide6.QtWidgets import(QComboBox, QGroupBox, QLabel,
QMenuBar, QPushButton, QStatusBar, QTextEdit, QWidget)
class Ui_QtWeather(object):
def setupUi(self, QtWeather):
if not QtWeather.objectName():
QtWeather.setObjectName(u"QtWeather")
QtWeather.setWindowModality(Qt.ApplicationModal)
wordpress搜索文章
self.cityLabel = upBox)
self.cityLabel.setObjectName(u"cityLabel")
self.cityLabel.setGeometry(QRect(20,30,31,16))
self.selectBox = upBox)
self.selectBox.setObjectName(u"selectBox")
self.selectBox.setGeometry(QRect(60,30,231,22))
self.selectBox.setEditable(True)
self.clearBtn = alwidget)
self.clearBtn.setObjectName(u"clearBtn")
self.clearBtn.setGeometry(QRect(30,330,75,24))
c程序设计试题汇编第三版答案解析self.seachBtn = alwidget)
self.seachBtn.setObjectName(u"seachBtn")
伦勃朗的宗教绘画
self.seachBtn.setGeometry(QRect(270,330,75,24))
阿里大鱼短信平台php漏洞QtWeather.alwidget)
QtWeather.ubar)
self.statusbar = QStatusBar(QtWeather)
self.statusbar.setObjectName(u"statusbar")
QtWeather.setStatusBar(self.statusbar)
self.t(QtWeather.queryWeather)
self.t(QtWeather.clearText)
# setupUi
def retranslateUi(self, QtWeather):
_translate = anslate
QtWeather.setWindowTitle(_translate("QtWeather",u"MainWindow",None))
self.cityLabel.setText(_translate("QtWeather",u"城市",None))
self.clearBtn.setText(_translate("QtWeather",u"清空",None))
self.seachBtn.setText(_translate("QtWeather",u"查询",None))
self.selectBox.addItem("⼴州")
self.selectBox.addItem("韶关")
self.selectBox.addItem("深圳")
self.selectBox.addItem("珠海")
self.selectBox.addItem("汕头")

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论