- 安装pyside6
pip install pyside6
- vscode打开designer
pyside6-designer
- ui文件转py文件
pyside6-uic 文件名.ui > 文件名.py
第一个pyside6程序
QWidget窗口的创建
基础窗口
import sys
from PySide6.QtWidgets import QApplication,QWidget
# 创建应用程序实例对象
app=QApplication(sys.argv)
#创建窗口实例对象
window=QWidget()
#显示窗口
window.show()
# 进入事件循环,若遇到退出命令,返回整数n
n=app.exec()
#结束程序
sys.exit(n)
简单交互案例
import sys
from PySide6.QtWidgets import QApplication,QWidget,QLabel
from PySide6.QtWidgets import QPushButton
# 创建应用程序实例对象
app=QApplication(sys.argv)
#创建窗口实例对象
window=QWidget()
window.setWindowTitle("你好") #设置窗口标题
window.resize(300,150) #设置窗口长和宽
#在窗口中创建文本实例对象
label=QLabel(window)
text="文本测试案例"
label.setText(text) #设置标签文字
label.setGeometry(80,50,150,20) #设置标签的位置和长度
#在窗口中创建按钮实例对象
button=QPushButton(window)
button.setText("关闭")
button.setGeometry(120,100,50,20) #设置按钮的位置和长度
button.clicked.connect(window.close) #将按钮的单击信号和窗口关闭槽信号连接
#显示窗口
window.show()
#结束程序
sys.exit(app.exec())
Pyside6 可视化编程架构
界面用函数来定义
将创建窗口控件的代码放在
setupUi()
中,按钮事件与窗口事件的关联也移到函数中。
setupUi()
函数的形参是窗口,在主程序中调用setupUi()
,并把窗口实例作为实参传递给setupUi()
函数。
import sys
from PySide6.QtWidgets import QApplication,QWidget,QLabel
from PySide6.QtWidgets import QPushButton
def setupUi(window): #形参window是一个窗口的实例对象
window.setWindowTitle("你好") #设置窗口标题
window.resize(300,150) #设置窗口长和宽
#在窗口中创建文本实例对象
label=QLabel(window)
text="文本测试案例"
label.setText(text) #设置标签文字
label.setGeometry(80,50,150,20) #设置标签的位置和长度
#在窗口中创建按钮实例对象
button=QPushButton(window)
button.setText("关闭")
button.setGeometry(120,100,50,20) #设置按钮的位置和长度
button.clicked.connect(window.close) #将按钮的单击信号和窗口关闭槽信号连接
if __name__=='__main__':
app=QApplication(sys.argv)
myWindow=QWidget()
setupUi(myWindow)
myWindow.show()
sys.exit(app.exec())
界面用类来定义
将创建窗口控件的代码定义到
MyUi
类的setupUi()
函数中,各个控件是MyUi
类中的属性,在主程序中用MyUi
类实例化对象ui,例如主程序中用
ui.button.setText("Close")
语句修改了按的显示文字,按事件与窗日事件的关联也移到了主程序中。
import sys
from PySide6.QtWidgets import QApplication,QWidget,QLabel
from PySide6.QtWidgets import QPushButton
class MyUi():
def setupUi(self,window): #定义方法,形参window是一个窗口的实例对象
window.setWindowTitle("你好") #设置窗口标题
window.resize(300,150) #设置窗口长和宽
#在窗口中创建文本实例对象
self.label=QLabel(window)
self.text="文本测试案例"
self.label.setText(self.text) #设置标签文字
self.label.setGeometry(80,50,150,20) #设置标签的位置和长度
#在窗口中创建按钮实例对象
self.button=QPushButton(window)
self.button.setText("关闭")
self.button.setGeometry(120,100,50,20) #设置按钮的位置和长度
if __name__=='__main__':
app=QApplication(sys.argv)
myWindow=QWidget()
ui=MyUi() #用MyUi类创建实例ui
ui.setupUi(myWindow) #调用ui的方法setupUi(),并以窗口实例对象作为实参
ui.button.setText("close") #重新设置按钮上显示的文字
ui.button.clicked.connect(myWindow.close)
myWindow.show()
sys.exit(app.exec())
界面用模块来定义
一个界面非常复杂,创建界面控件的代码也就会很多,如果使用模块和包的概念则程序中创建界面控件的类
MyUi
可以单独存放到一个文件中,在使用的时候用import语句
把MyUi
类导人进来,实现控件代码与窗口代码的分离。
- 在项目路径下创建一个文件
myUI.py
from PySide6.QtWidgets import QPushButton,QLabel
class MyUi():
def setupUi(self,window): #定义方法,形参window是一个窗口的实例对象
window.setWindowTitle("你好") #设置窗口标题
window.resize(300,150) #设置窗口长和宽
#在窗口中创建文本实例对象
self.label=QLabel(window)
self.text="文本测试案例"
self.label.setText(self.text) #设置标签文字
self.label.setGeometry(80,50,150,20) #设置标签的位置和长度
#在窗口中创建按钮实例对象
self.button=QPushButton(window)
self.button.setText("关闭")
self.button.setGeometry(120,100,50,20) #设置按钮的位置和长度
- 新建一个py文件
import sys
from myUI import MyUi
from PySide6.QtWidgets import QApplication,QWidget
if __name__=='__main__':
app=QApplication(sys.argv)
myWindow=QWidget()
ui=MyUi() #用MyUi类创建实例ui
ui.setupUi(myWindow) #调用ui的方法setupUi(),并以窗口实例对象作为实参
ui.button.setText("close") #重新设置按钮上显示的文字
ui.button.clicked.connect(myWindow.close)
myWindow.show()
sys.exit(app.exec())
界面与逻辑的分离
创建
myWidget()
函数,在函数中用widget = QWidget(parent)
语句创建QWidget
类的实例对象widget
。这时首先执行的是 QWidget类的初始化函数
__init__()
经过初始化后的对象成为真正窗口。注意
myWidget()
函数的返回值是窗口实例对象 widget。
import sys
from myUI import MyUi
from PySide6.QtWidgets import QApplication,QWidget
def myWidget(parent=None):
widget=QWidget(parent) #创建QWidget类的对象,调用Qwidget的__init__()函数
ui=MyUi() #用MyUi类创建实例ui
ui.setupUi(widget) #调用ui的方法setupUi(),并以窗口实例对象作为实参
ui.button.setText("close") #重新设置按钮上显示的文字
ui.button.clicked.connect(widget.close)
return widget
if __name__=='__main__':
app=QApplication(sys.argv)
myWindow=myWidget() #调用myWidget()函数,返回值是窗口实例对象
myWindow.show()
sys.exit(app.exec())
笔记内容来自《QT for python Pyside6 gui 界面开发详解与实例》
笔记为笔者在《QT for python Pyside6 gui 界面开发详解与实例》后整理而成。
代码笔者均已验证
每日一更,持续更新中
传送门