Python中如何使用Qt for Python (aka PySide2)进行GUI开发
https://wiki.qt.io/Qt_for_Python
代码示例:
http://blog.qt.io/blog/2018/05/04/hello-qt-for-python/
Python中如何使用Qt for Python (aka PySide2)进行GUI开发
PySide 的 Qt 版本不是最新的 比较蛋疼
帖子回复:
要在Python里用Qt for Python(也叫PySide2)搞GUI开发,其实挺直接的。PySide2就是Qt官方给Python的绑定,和PyQt5用起来差不多,但许可证更友好(LGPL)。
1. 先装包:
pip install PySide2
2. 基本代码结构: 一个最简单的窗口程序长这样:
import sys
from PySide2.QtWidgets import QApplication, QLabel, QWidget
if __name__ == "__main__":
app = QApplication(sys.argv) # 每个Qt程序都要有这个
window = QWidget() # 创建一个空窗口
window.setWindowTitle("我的第一个PySide2程序")
window.setGeometry(100, 100, 300, 200) # (x, y, 宽度, 高度)
label = QLabel("Hello PySide2!", window) # 在窗口里放个标签
label.move(100, 80)
window.show() # 显示窗口
sys.exit(app.exec_()) # 进入主循环
3. 用Qt Designer加速开发: 别傻乎乎全手写代码,Qt Designer(图形界面设计器)才是生产力工具。它随PySide2一起安装,通常在这里:
<你的Python环境路径>/Lib/site-packages/PySide2/designer.exe
用它拖拖拽拽做好界面,保存为.ui文件(比如mywindow.ui),然后在代码里动态加载:
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QFile
loader = QUiLoader()
ui_file = QFile("mywindow.ui")
ui_file.open(QFile.ReadOnly)
window = loader.load(ui_file)
ui_file.close()
window.show()
或者更常用的方式,用pyside2-uic工具把.ui文件转成Python代码:
pyside2-uic mywindow.ui -o ui_mywindow.py
然后在主程序里导入使用:
from PySide2.QtWidgets import QApplication
from ui_mywindow import Ui_MainWindow
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# 这里可以连接信号槽,比如:
self.ui.pushButton.clicked.connect(self.on_button_click)
def on_button_click(self):
self.ui.label.setText("按钮被点了!")
app = QApplication([])
window = MyWindow()
window.show()
app.exec_()
4. 信号槽(事件处理): 这是Qt的核心机制,处理用户交互贼方便:
from PySide2.QtWidgets import QPushButton
from PySide2.QtCore import Slot
button = QPushButton("点击我")
button.clicked.connect(self.some_function) # 连接信号到槽函数
@Slot() # 这个装饰器不是必须的,但用了更好
def some_function(self):
print("按钮被点击了")
总结建议: 先用Qt Designer画界面,再用信号槽处理交互,这是最高效的PySide2开发流程。
Python 写 Qt 有什么优势么?能否直接编译为 native ?
那我来个示例: Python Qt 写的视屏截图,自动识别字幕位置拼接成长图: https://github.com/shootsoft/PlutoVideoSnapshoter
打包了 Windows 和 macOS 的可执行文件包,欢迎 star😁
PySide 不如官方的 Qt Designer 好用,python 可以直接加载 ui 文件,可以打包成可执行文件。
感觉做界面布局好麻烦,有没有拖控件的方法?
Qt Designer 可以拖放,生成.ui 文件,python 可以直接加载。不过有些技巧还是需要掌握的,建议看个一个小时左右的视屏教程就可以了。
解决方案:不要那么在意界面,能用就得了
话说怎么没见人抱怨过前端布局麻烦 …
问一下 pytouch2 和 pyqt5 有啥区别
上面打错了,是 pyside2 和 pyqt5 有啥区别
老哥 你有教程么 方便放一下么
PyQt 是商业及 GPL 的版权, 而 PySide 是 LGPL.
也就是如果使用 PyQt 做商业应用的话就需要付费, 而使用 Nokia 的 PySide 则不需要。
因为用过 c#,被 ms 惯坏了 😶
用没有人比较过 pyqt,pyside,qt/c++之间的性能?包括应用启动时间,界面流畅度等。用 python 的 qt 绑定总是在性能上有所妥协的吧?不知道会有多大妥协。我之前用 pyqt5 做过一些应用,pyqt 的另一大坑是打包麻烦。
之前用过 pyqt5,跨平台很赞。但是如果需要打包的话就很蛋疼了,总是各种依赖问题,还有包体积贼大! pyqt5 的资料也好少,想美化界面都没地方学。。。
没几个人用,没包
py 3.6 不支持 23333
<img src=“https://view.moezx.cc/images/2018/05/06/Capture851208c08750b72e.png” alt=“Capture851208c08750b72e.png” border=“0” />
python 写 qt,可以整合 numpy,对比 C++调用 blas 或者其他高端矩阵库方便许多。
若是用不到 numpy,宁愿直接写 C++。毕竟自从 c++11 后,函数牛逼了,智能指针、正则、auto 进标准了,写起来跟脚本语言差不多
这个我不是很清楚…不过我看其他人貌似已经回答了😅
YouTube 上有很多,付费的 Udemy 有比较系统的课程。
QT 还活着啊。

