main.py如下:
import sys
from PyQt5 import QtWidgets
from interface import Ui_MainWindow
class My_MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # 主窗口
def __init__(self, parent=None):
super(My_MainWindow, self).__init__(parent) # 初始化
self.setupUi(self)
self.pushButton.clicked.connect(self.addw) # 调用
self.pushButton_3.clicked.connect(self.close) # 关闭窗口
def addw(self):
import main_add
self.one = main_add.QtWidgets.QMainWindow()
self.one.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MainWindow = My_MainWindow()
MainWindow.show()
sys.exit(app.exec_())
main_add.py如下:(可以单独运行打开UI窗口)
import sys
from PyQt5 import QtWidgets
from add import Ui_MainWindow
class My_MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # 主窗口
def __init__(self, parent=None):
super(My_MainWindow, self).__init__(parent) # 初始化
self.setupUi(self)
self.pushButton.clicked.connect(self.count) # 调用
self.pushButton_2.clicked.connect(self.close) # 关闭窗口
def count(self):
a = float(self.lineEdit.text())
b = float(self.lineEdit_2.text())
c = a + b
self.lineEdit_3.setText(str(c))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MainWindow = My_MainWindow()
MainWindow.show()
sys.exit(app.exec_())
但是在 main.py 中调用 main_add.py 点击后可以打开窗口,但是打开的窗口没有能够成功初始化。要怎么解决么???
参考GPT和自己的思路:
在 main.py 中调用 main_add.py 创建的窗口对象是没有成功初始化的,原因是因为你在 My_MainWindow 类中创建了一个名为 one 的属性来存储 main_add.QMainWindow() 对象,但是这个对象没有被正确初始化,因为没有调用它的 __init__() 方法。
要解决这个问题,你可以在 My_MainWindow 类的 addw() 方法中调用 one 对象的 __init__() 方法,如下所示:
def addw(self):
import main_add
self.one = main_add.My_MainWindow()
self.one.__init__()
self.one.show()
这样就能够成功初始化 main_add.QMainWindow() 对象并打开窗口了。