网站开发颜色代码,网店怎么开的,馆陶网站建设电话,凡科网站建设价格1、打开PySide6的UI设计工具pyside6-designer#xff0c;设计一个主窗口#xff0c;保存文件名为testwindow.ui
2、使用PySide6的RCC工具把testwindow.ui文件转换为testwindow_rc.py文件#xff0c;此文件中有一个类Ui_MainWindow#xff08;包含各种控件对象#xff09;…1、打开PySide6的UI设计工具pyside6-designer设计一个主窗口保存文件名为testwindow.ui
2、使用PySide6的RCC工具把testwindow.ui文件转换为testwindow_rc.py文件此文件中有一个类Ui_MainWindow包含各种控件对象
一、通过类继承实现
# 导入标准库sys
import sys
# 导入PySide6库中的两个类QApplication, QMainWindow
from PySide6.QtWidgets import QApplication, QMainWindow
# 导入使用PySide6-Rcc工具转换的UI设计窗口Ui_MainWindow类
from testwindow_rc import Ui_MainWindow# 应用程序
class TestMainWindow(QMainWindow, Ui_MainWindow):def __init__(self):super(TestMainWindow, self).__init__()self.setupUi(self)if __name__ __main__:app QApplication(sys.argv)win TestMainWindow()win.show()sys.exit(app.exec())
class TestMainWindow(QMainWindow, Ui_MainWindow): 定义了一个新的类TestMainWindow它继承自 QMainWindowPySide6.QtWidget中的QtMainWindow类 和 Ui_MainWindow。
在这种多重继承的情况下QMainWindow 是 PySide6中提供的一个主窗口类它包含了很多创建和管理主窗口的功能。而 Ui_MainWindow 是由 PySide6 Designer 生成的一个界面类它包含了在设计器中设计的窗口界面及其上的所有元素和布局。
TestMainWindow 类通过继承这两个类同时获得 QMainWindow 的窗口管理功能和 Ui_MainWindow 的界面元素。
调用执行self.setupUi(self) 其实是调用Ui_MainWindow中的setupUi()方法传入实参self是TestMainWindow类的实例对象从而实现设计的窗口界面及其上元素控件的初始化完成布局。
通过上面的分离以后修改Ui文件进行界面元素添加和修改属性等然后转化Ui文件将不影响逻辑代码。
另外定义和设计方法来控制窗口及其上控件的行为响应用户的操作等。要在TestMainWindow类的 __init__(self) 及其它方法中完成这样不会因为修改ui文件及转化而被覆盖。
super(TestMainWindow, self).__init__()是 Python 中用于调用父类构造方法的一种写法。在这里TestMainWindow 是子类而 self 是子类的实例。super() 函数是用来临时改变当前类的父类并返回一个父类的实例。因此super(TestMainWindow, self) 返回的就是 TestMainWindow 的父类的一个实例然后调用其 __init__() 方法即初始化方法。
这样做的目的是在子类的 __init__() 方法中首先执行父类的 __init__() 方法以便能够继承父类的属性和方法。这是一种常见的在面向对象编程中实现继承的方式。
在 Python 3 中可以直接在子类中使用 super().__init__()Python 会自动解析当前类和 self不需要显式地传入。
二、关联界面类来实现
# 导入标准库sys
import sys
# 导入PySide6库中的两个类QApplication, QMainWindow
from PySide6.QtWidgets import QApplication, QMainWindow
# 导入使用PySide6-Rcc工具转换的UI设计窗口Ui_MainWindow类
from testwindow_rc import Ui_MainWindow# 创建的类继承PySide6的主窗口类QMainWindow
class TestMainWindow(QMainWindow):def __init__(self):# 执行父类QMainWindow的构造函数从而让子类TestMainWindow的实例对象# 具有父类的功能和属性super().__init__()# 创建Ui界面类实例并赋值给TestMainWindow的实例对象属性uiself.ui Ui_MainWindow()# 调用TestMainWindow的实例对象属性ui的setupUi()方法# 传入实参self是TestMainWindow的实例对象,从而实现Ui界面元素的创建self.ui.setupUi(self)if __name__ __main__:app QApplication(sys.argv)win TestMainWindow()win.show()sys.exit(app.exec())
三、直接载入Ui文件
import sys
from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
# 导入PySide6库中的两个类QApplication
from PySide6.QtWidgets import QApplication
class TestMainWindow:def __init__(self):super(TestMainWindow, self).__init__()# 从ui文件中加载UI定义qfile QFile(testwindow.ui)qfile.open(QFile.ReadOnly)qfile.close()# 从UI定义中动态创建一个相应的窗口对象self.ui QUiLoader().load(qfile)if not self.ui:print(QUiLoader().errorString())sys.exit(-1)if __name__ __main__:app QApplication(sys.argv)win TestMainWindow()win.ui.show()sys.exit(app.exec())
笔者建议使用第一种方法通过继承方式。