(一)Qt与Python—PySide的简介及安装
1.Pyside的简介
PySide(在本文中指代PySide2和PySide6) 是一个Python的图形化界面(GUI)库,由C++版的Qt开发而来,在用法上基本与C++版没有特别大的差异。PySide 是一个python绑定的跨平台图形化界面 Qt库。
PySide是由诺基亚公司开发的,简单来说就是其Qt库的Python移植(原先是C++的)。目前,支持Python的Qt库有两个PyQt和PySide,PySide是PyQt 的兄弟,常被网友戏称为诺基亚的亲儿子。PySide是一个免费的软件,与PyQt不同之处在于使用了LGPL,允许PySide免费的开发商业软件。
PySide和PyQt的关系,前者是Qt公司的产品,后者是第三方公司的产品,二者用法基本相同。不过,在使用协议上却有很大差别,PySide可以在LGPL协议下使用,PyQt则在GPL协议下使用。
PySide的主要对手是PyQt。PyQt出现得比PySide早,但是PySide血统更纯正一些(毕竟是亲儿子)。但是具体应用两者差不多,因为目前Qt的IDE也没有把Python弄进去,要实现同样功能两者要进行的操作大同小异。PyQt个人应用免费,但是商业应用要收钱,相比下PySide的个人和商业双免费的策略更让人放心一些。
PySide为我们提供了两种开发界面的方式,一种是QtWidget,早期比较常见;另一种叫QML,是一种新型的开发方式,这也是Qt正在努力推广的开发方式。
2.pyside的安装
首先在Anaconda中,安装Pysidde,其各种版本的正确搭配:
pyside2:Qt5,Python2.7/Python>=3.5
pyside6: Qt6, Python>=3.6
pip install PySide6
其中 pyside 安装包大概112M,可能需要等待安装几分钟,安装完成后:有的朋友,网络比较慢,可以指定国内的安装源,下载安装。比如,使用豆瓣源下载安装:
pip install pyside2 -i https://pypi.douban.com/simple/
下一步验证安装,ananconda,下输入如下的代码以检查:
import PySide6.QtCore
# 打印PySide6版本
print(PySide6.__version__)
# 打印用于编译PySide6的Qt版本
print(PySide6.QtCore.__version__)
3.pyside的Hello world程序
import random
import sys
from PySide6.QtCore import Qt, Slot
from PySide6.QtWidgets import (QApplication, QLabel, QPushButton,
QVBoxLayout, QWidget)
from __feature__ import snake_case, true_property
class MyWidget(QWidget):
def __init__(self):
QWidget.__init__(self)
self.hello = [
"Hallo Welt",
"你好,世界",
"Hei maailma",
"Hola Mundo",
]
self.button = QPushButton("Click me!")
self.message = QLabel("Hello World")
self.message.alignment = Qt.AlignCenter
self.layout = QVBoxLayout(self)
self.layout.add_widget(self.message)
self.layout.add_widget(self.button)
# Connecting the signal
self.button.clicked.connect(self.magic)
@Slot()
def magic(self):
self.message.text = random.choice(self.hello)
if __name__ == "__main__":
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
其运行结果如下:
4.参考文献及网站连接
https://www.byhy.net/tut/py/gui/qt_01/
https://doc.qt.io/qtforpython-6/gettingstarted/porting_from2.html
https://www.qt.io/qt-for-python
https://blog.csdn.net/qq_41185868/article/details/126895643