(一)Qt与Python—PySide的简介及安装

发布时间 2023-08-18 12:54:45作者: GeoFXR

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