很多人都知道qt在python下有pyqt5,那为什么还要个pyside2呢?
大家可以参考下知乎的一篇文章,大致是说:
Pyside的诞生主要是Nokia与Riverbank Computing谈崩了的结果。
Riverbank Computing是pyQt的开发商,对pyQt采用GPLv3协议。Nokia主动与Riverbank Computing展开了多轮协商,表示希望pyQt能添加对LGPL协议的支持,这样对于很多商业用户会更友好,何况你在pyQt里使用的也是我们LGPL协议版本的Qt,这个要求不过分吧。Riverbank Computing说我觉得不行。Nokia一气之下决定单干,于2009年8月发布了支持了LGPL协议的PySide,pyQt的对标产品。
之前我也是一直使用pyqt5,因为开源协议商业化必须开源的问题,我最后选择pyside2。
PyQt是GPLv3协议,程序中用了它,你的程序就要开源。
PySide是LGPL协议,如果你只是作为库用用它,你的程序还是可以闭源商用。
如何安装pyside2
pyside2 现在最高版本 5.15.2,发布于2020年底
pip install pyside2
简单例子
#!/usr/bin/env python # -*- coding: utf-8 -*- """ @author: wind @contact: 367059791@qq.com @time: 2021/12/27 17:31 @file: demo_simple.py @desc: 最简单例子 """ import sys from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel from PySide2.QtGui import QIcon from PySide2.QtCore import Qt class FirstDemoWidget(QWidget): def __init__(self, parent=None): super(FirstDemoWidget, self).__init__(parent) self.setWindowTitle("pyside2 示例1") # self.setWindowIcon(QIcon(r"C:\Users\Admin\Pictures\wnd.jpg")) # self.resize(600, 400) # layout = QVBoxLayout() layout.addWidget(QLabel("hello", self), alignment=Qt.AlignCenter) # self.setLayout(layout) if __name__ == "__main__": app = QApplication(sys.argv) wnd = FirstDemoWidget() wnd.show() sys.exit(app.exec_())
效果如下:
跟pyqt5相比,似乎只是导入名改变了!由PyQt5换成了PySide2。
这里笔者创建了一个窗口 FirstDemoWidget,设置了窗体标题(setWindowTitle);窗体图标;设置了窗体大小(setWindowIcon);放置了一个QLabel,使用居中对齐(Qt.AlignCenter),使用了垂直布局QVBoxLayout。
启动说明
app = QApplication(sys.argv) # 创建了app sys.exit(app.exec_()) # app.exec_() 启动了主循环!app.exec_()退出时会返回状态码。