使用qtDesigner构建好.ui文件后,将ui文件引入pyside6方法有三种:
- 继承式(使用uic工具转成py文件)(打包阶段建议使用这种方式:最佳)
import sys from PySide6.QtWidgets import * from ui_ui_window import Ui_Form # 继承UI类 class MainWindow(QWidget, Ui_Form): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec())
- 赋值式(使用uic工具转成py文件)(打包阶段建议使用这种方式)
import sys from PySide6.QtWidgets import * from ui_ui_window import Ui_Form class MainWindow(QWidget): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) # 将UI类进行实例化赋值 self.ui = Ui_Form() self.ui.setupUi(self) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec())
- 转换式(直接使用ui文件)(开发阶段建议使用这种方式)
QUiLoader使用 connect() 调用将函数签名作为信号/插槽连接的字符串参数。因此,它无法处理 Python中的str或list等 Python 类型,因为这些类型在内部映射到不同的 C++ 类型。from PySide6.QtUiTools import QUiLoader from PySide6.QtWidgets import QApplication class Main: def __init__(self): # 加载UI文件 self.ui = QUiLoader().load('postman.ui') # 为组件绑定事件 self.ui.sendButtion.clicked.connect(self.handle_send_button) self.ui.clearButton.clicked.connect(self.handle_clear_button) def handle_send_button(self): print(1) def handle_clear_button(self): print(2) if __name__ == '__main__': app = QApplication([]) main = Main() # 打包时候换成方式二:main.show() main.ui.show() app.exec()