重新打开通知
我不知道该放在哪里...重新打开问题后,我将其删除。它已被关闭(单手操作)显然仅是因为我在评论中发布了指向另一个SO线程的链接。但是,此链接的目的不是回答这个问题,而是针对评论中的其他问题。这个问题没有被另一个问题回答,而是由评论回答。对@icwebndev回答评论中的问题并应该有机会真正回答这个问题,这是不公平的。
我确实有一个基于PySide2 / PyQT5的应用程序,到目前为止效果良好。在主窗口上,当我按下按钮时,将打开一个小部件(QDialog),该小部件将使用其__init__()
方法执行一些初始化步骤。
当关闭此窗口(使用其close()
)方法并在以后重新打开时,使用__init__() is not called anymore, only the
show()`方法。有没有办法在每次打开对话框时重新初始化对话框?
编辑:在写问题时,我想到只需将相关代码移至show()
函数即可。另一方面,我感觉这不是实现此目的的方法。
下面是最小化的代码。首次打开窗口时的控制台输出为:
Hello_show
Hello_init
第二次是唯一的
Hello_show
mainWindow.py
def startWeighInButtonPressed(self):
weighInWindow = WeighInWidget(parent=self, app=self.app)
weighInWindow.show()
weighInWidget.py
class WeighInWidget(QtWidgets.QDialog):
app = None # type: QApplication
def __init__(self, parent=None, app=None):
# Get application instance
self.app = app
# Call parent
super(WeighInWidget, self).__init__(parent)
# Do some other init steps
if initFailed
error_msg = QtWidgets.QErrorMessage()
error_msg.showMessage('Some Error message')
error_msg.exec_()
self.close()
return
# Setup UI
self.ui = Ui_weighInWidget()
self.ui.setupUi(self)
print('Hello_init')
def show(self):
print('Hello_show')
super().show()
def close(self):
self.deleteLater()
super().close()