我使用qt设计器创建了两个窗口win1
和win2
,并添加了两个按钮:btn_open_win2
从win2
和{ {1}}关闭win1
。
当我直接运行btn_close
时,win2
方法可以正常工作,但是当我运行win2
并从中调用win2时,close
上的win1
按钮却无法运行操作不正确。
我知道问题是由于在close
部分中定义了win2所致,如下代码所示,但是我无法解决此问题。
win1:
win2
win2:
if __name__ =='__main__'
答案 0 :(得分:0)
像这样更改win2:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
class Ui_Win2(object):
def setupUi(self, MainWindow):
self.MainWindow = MainWindow
MainWindow.setObjectName("Win2")
MainWindow.resize(640, 480)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.btn_close = QtWidgets.QPushButton(self.centralwidget)
self.btn_close.setGeometry(QtCore.QRect(260, 180, 131, 101))
self.btn_close.setObjectName("btn_close")
self.btn_close.clicked.connect(self.on_close)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Win2"))
self.btn_close.setText(_translate("MainWindow", "close"))
def on_close(self):
# win2 = QMainWindow()
# ui = Ui_Win2()
# ui.setupUi(win2)
self.MainWindow.close()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win2 = QMainWindow()
ui = Ui_Win2()
ui.setupUi(win2)
win2.show()
sys.exit(app.exec_())
从 self.MainWindow 而不是 self 调用关闭功能。并在 setupUi 函数
的第一行中设置 self.MainWindow