Windows下的第一个PyQt程序

Arya Lv3

前言✨

PyQt是Python语言的GUI编程解决方案之一,可以运行到多种平台上。可以用来代替Python内置的Tkinter。PyQt的开发者是英国的“Riverbank Computing”公司。它可以免费地用于自由软件的开发。不过目前尚不提供LGPL授权方式(利用Qt官方动态链接库,但不必开放商业代码)。2009年8月,Qt的开发公司诺基亚发布PySide,提供与PyQt类似的功能,但提供了LGPL授权。自4.5版本以后[4],PyQt同时支持Python 2.x与Python 3.x。

这是一个简单的PyQt程序,建立一个PyQt窗口,可以逐渐向里面添加控件实现ui编写。因为是比较重要的基础程序,所以在这里列出来。

参考来自于维基百科

安装PySide2

PySide2支持Qt5框架,兼容Python2.7以上版本以及Python3.5以上版本。
在cmd中使用pip安装PySide2

1
pip install PySide2

第一个PyQt程序

QMainWindow无法使用setLayout()方法,因为它有自己的布局
参考来自:Qt文档

1
2
3
4
5
6
7
8
from PySide2 import QtWidgets
import sys
app=QtWidgets.QApplication(sys.argv) #初始化应用程序对象
window=QtWidgets.QMainWindow() #初始化GUI
window.resize(250,200)
window.setWindowTitle("test")
window.show() #显示GUI
app.exec_() #执行应用程序循环

结果:
PyQtWindow_simple

第一个对话框(布局)程序

但是我一般建立一个qt应用程序,通常是先建立一个窗口类,然后创建控件,控制布局,然后实例化窗口,运行show方法显示窗口。
参考来自:Qt文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from PySide2 import QtWidgets
import sys
class MyFirstQtWin(QtWidgets.QDialog):
def __init__(self):
super(MyFirstQtWin,self).__init__()
self.resize(250,200)
self.setWindowTitle("MyFirstQtWin")
self._ui()

def _ui(self):
self.createWidgets()
self.createLayouts()
def createWidgets(self):
self.label=QtWidgets.QLabel("label1")
self.label2=QtWidgets.QLabel("label2")
self.button=QtWidgets.QPushButton("button1")
self.button2=QtWidgets.QPushButton("button2")


def createLayouts(self):
self.layout_outside=QtWidgets.QHBoxLayout(self)
self.HLayout=QtWidgets.QHBoxLayout()
self.VLayout=QtWidgets.QVBoxLayout()
self.HLayout.addWidget(self.label)
self.HLayout.addWidget(self.button)
self.VLayout.addWidget(self.label2)
self.VLayout.addWidget(self.button2)
self.layout_outside.addLayout(self.HLayout)
self.layout_outside.addLayout(self.VLayout)

if __name__=="__main__":
app=QtWidgets.QApplication(sys.argv)
win=MyFirstQtWin()
win.show()
app.exec_()

结果:
PyQtDialog

内置到maya的PyQt程序

如果是要内置到maya中的窗口,需要通过mayaApi拿到maya窗口的指针,然后再继承它。这里面需要用python扩展maya的c++程序,所以要用到一个包,Shiboken Generator。参考来自:qt文档

1
2
3
4
5
6
7
8
9
10
11
12
13
from PySide2 import QtWidgets
import maya.OpenMayaUI as omui
from shiboken2 import wrapInstance
def getMayaWindowPtr():
ptr=omui.MQtUtil.mainWindow()
mayaWin=wrapInstance(int(ptr),QtWidgets.QMainWindow)
return mayaWin

class MayaWinProject(QtWidgets.QDialog):
def __init__(self,parent=getMayaWindowPtr()):
super(MayaWinProject,self).__init__(parent)

...
  • 标题: Windows下的第一个PyQt程序
  • 作者: Arya
  • 创建于 : 2023-11-06 18:00:00
  • 更新于 : 2024-03-12 19:26:30
  • 链接: https://aryagala0.github.io/2023/11/06/PyQt/Windows下的第一个PyQt程序/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论