我想在QWidget()
中调用@classmethod
来从Qt表单获取类的参数:
from PyQt5.QtWidgets import QWidget, QApplication
import sys
class FormDialog(QWidget):
def __init__(self):
QWidget.__init__(self)
super(FormDialog, self).__init__()
print("FormDialog called")
class Files(object):
def __init__(self):
pass
@classmethod
def from_gui(cls):
form = FormDialog()
form.show()
return cls()
if __name__ == '__main__':
app = QApplication(sys.argv)
obj = Files.from_gui() # "FormDialog called" appears, but window doesn't show up
form = FormDialog() # "FormDialog called" appears
form.show() # Window appears
sys.exit(app.exec_())
如果我在FormDialog()
内调用@classmethod
,窗口就不显示了。如果我在@classmethod
之外调用它,一切都像预期的那样。为什么?
将此方法放在FormDialog类中以查看实际发生的情况
def __del__(self):
print('Deleting the form')
当from_gui方法返回时,将销毁formDialog。
你可以用以下方法解决它: