我使用GUI
创建一个Qt Designer
。现在,我需要给closeEvent
附加参数。如何为closeEvent
赋予额外的参数?该参数将是另一个窗口的实例。这样我就可以将此实例用作closeEvent中另一个函数的参数。
下面是一个简化的代码。
class UiMain(QtWidgets.QMainWindow):
def __init__(self, subwindow):
super(UiMain, self).__init__()
self.ui = Ui_UiArtikelkarte()
self.ui.setupUi(self)
self.show()
def closeEvent(self, event, subwindow):
some_function(self, source=subwindow)
event.accept()
app = QtWidgets.QApplication(sys.argv)
win1 = UiMain(subwindow)
sys.exit(app.exec_())
这给了我课程:
TypeError: closeEvent() missing 1 required positional argument: 'subwindow'
有什么方法可以给closeEvent
附加参数?
帮助将不胜感激。
答案 0 :(得分:0)
由于将额外的参数传递给构造函数,也许您可以只保存数据并将其显示在closeEvent
方法上。
class UiMain(QtWidgets.QMainWindow):
def __init__(self, test):
super(UiMain, self).__init__()
self.test = test
self.ui = Ui_UiArtikelkarte()
self.ui.setupUi(self)
self.show()
def closeEvent(self, event):
print(self.test)
event.accept()
app = QtWidgets.QApplication(sys.argv)
win1 = UiMain("hello")
sys.exit(app.exec_())
答案 1 :(得分:0)
我认为您必须将子窗口作为属性传递:
class UiMain(QtWidgets.QMainWindow):
def __init__(self, subwindow):
super(UiMain, self).__init__()
self.subwindow = subwindow
self.ui = Ui_UiArtikelkarte()
self.ui.setupUi(self)
self.show()
def closeEvent(self, event):
some_function(self, source=self.subwindow)
event.accept()
app = QtWidgets.QApplication(sys.argv)
win1 = UiMain(subwindow)
sys.exit(app.exec_())