Отказ от ответственности: решение, предоставленное этим ответом, не было проверено и может быть неполным.
При нажатии кнопки GraphicButton
или QuestionButton
,
self.ui = Ui_GraphWindow()
или
self.ui = Ui_QuestionWindow()
Это изменит self.ui
.При нажатии ImportButton
, self.ui
будет ссылаться на другие окна.Я полагаю, это непреднамеренно .
Когда команды в import_clicked()
выполняются, могут быть ссылки на неопределенные классы, виджеты и еще много чего.
self.ui.RefWidget.setSortingEnabled(False)
Я предполагаю, что RefWidget не определен в Ui_QuestionWindow или Ui_GraphWindow.
Чтобы решить эту проблему, попробуйте добавить
def import_clicked(self):
self.ui = Ui_MainWindow() # set self.ui to refer to a MainWindow
# ...
и посмотреть, работает ли он.( Предупреждение: новое MainWindow может быть создано, а старое MainWindow оставлено забытым. Опять же, я не проверял это, чтобы убедиться, что создает новое MainWindow, но моя интуиция говоритмне, что это делает.)
РЕДАКТИРОВАТЬ: Выше предложение в зачеркивание не сработало для OP.
Если возникнут дальнейшие проблемы и хаос, рассмотрите три отдельныхпеременные-члены вместо одного self.ui
.
def __init__(self, parent = None):
super().__init__(parent)
self.uiMain = Ui_MainWindow() # new member variable: self.uiMain
# ...
def import_clicked(self):
self.uiMain.RefWidget.setSortingEnabled(False)
self.uiMain.LubWidget.setSortingEnabled(False)
self.uiMain.MixWidget.setSortingEnabled(False)
# ...
def graphic_clicked(self):
self.Gwindow = QtWidgets.QMainWindow()
self.uiGraphic = Ui_GraphWindow() # new member variable: self.uiGraphic
# ...
def question_clicked(self):
self.Questwindow = QtWidgets.QMainWindow()
self.uiQuestion = Ui_QuestionWindow() # new member variable: self.uiQuestion
# ...