Я хочу вызвать 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
, все будет работать так, как задумано. Почему?