0

我有一个目录/文件夹,其中包含两个文件 MainWindow.py Mainwindow.ui

我在 QtDesigner6 中设计了我的 MainWindow.ui 并将输出文件转换为 MainWindow.ui

我有一个代码窗口,它启动一个窗口/表单并在它的全部荣耀中显示一个空白窗口,该窗口显示并且可以关闭。

from PySide6.QtWidgets import QApplication, QWidget


import sys

app = QApplication(sys.argv)

window = QWidget()

window.show()  

app.exec_()

我从一本书中获取的这段代码,我的问题是如何让这段代码启动我转换后的 MainWindow.ui 文件,而不仅仅是一个空白窗口?

我尝试将行更改为:window = MainWindow() 从而删除 QWidget 和其他许可,但没有显示我精心制作的 ui

4

1 回答 1

1

表单文件不会自动在您的应用程序中使用,您必须手动加载文件并使用QUiLoader. 在您的示例中,这将类似于:

import sys
from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QApplication

main_form = QFile("MainWindow.ui")
main_form.open(QFile.ReadOnly)

app = QApplication(sys.argv)
window = QUiLoader().load(main_form)
window.show()  

app.exec_()

另一种选择是使用该pyside6-uic工具根据您的表单文件为小部件生成一个类:

$ pyside6-uic MainWindow.ui > main_window.py

然后在您的代码中使用它,例如:

import sys
from PySide6.QtWidgets import QApplication, QMainWindow
from main_window import UI_MainWindow # your form class name with a UI_ prefix

app = QApplication(sys.argv)

window = QMainWindow()
UI_MainWindow().setupUi(window)

window.show()
app.exec_()
于 2021-05-23T15:20:04.343 回答