在Qt designer中,新建一个QMainWindow,新建一个QWidget,并命名为widget,如图:
新建NewClass.py,输入代码:
# encoding: utf-8
from PySide6.QtWidgets import QWidget
class NewClass(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
print('IsNew')
新增提升NewClass,并将上面新建的widget提升
保存ui,回到python,输入代码:
import sys
from PySide6.QtCore import QFile
from PySide6.QtWidgets import QApplication
from PySide6.QtUiTools import QUiLoader
if __name__ == '__main__':
app = QApplication(sys.argv)
ui_loader = QUiLoader()
ui_file = QFile('../uis/form1.ui')
ui_file.open(QFile.ReadOnly)
form0 = ui_loader.load(ui_file)
ui_file.close()
form0.show()
sys.exit(app.exec())
发现并没有预料中的print('IsNew'),究其原因,在代码中加入:
print(type(form0.widget))
运行结果为:
print(type(form0.widget))
就是说,并没有将部件提升。
而在pyqt5中,是可以的。
import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication
if __name__ == '__main__':
app = QApplication(sys.argv)
form0 = uic.loadUi('../uis/form1.ui')
# findChildren(form0)
print(type(form0.widget))
form0.show()
sys.exit(app.exec())
pyqt5的运行结果:
IsNew
<class 'NewClass.NewClass'>