Открытие QDialog и сохранение последнего состояния

Я пытаюсь открытьQDialog изQMainWindowи после закрытия `QDialog, если мне нужно открыть его снова, он должен открыться и показать ту же информацию, которая была, когда я закрывал его.

Вот кодQMainWindow:

class A (QMainWindow):
  def __init__(self):
    QMainWindow.__init__(self)

    #I create a QPushButton to open the QDialog
    self.axes1 = self.figure_canvas.figure.add_axes ([0.8, 0.01, 0.19, 0.05])
    self.button = QPushButton(self.axes1,"Open Dialog")
    self.button.on_clicked(self.OpenDialog)

    #This is the method to open the QDialog which is in another module
  def OpenDialog(self, event):
    text = configurePort.ConfigurePort.retrieve_data(self)
    print text

Что этот код делает, это создает кнопку в моемQMainWindow и когда я нажимаю на него, он открываетQDialog, который создается в другом модуле. И это кодQDialog:

class ConfigurePort(QDialog):
  def __init__(self, parent = None):
     QDialog.__init__(self, parent)
     uic.loadUi("configurePort.ui", self)

    #I create a button to check active ports and show them
    self.connect(self.btn_checkconn, SIGNAL("clicked()"), self.check_ports)

    #This method calls another class which opens another QDialog
    #and I select the port that I want
  def check_ports(self):
     self.check_serial = CheckPorts(self)
     self.check_serial.exec_()

    #After selecting the port, when I close the QDialog of the class named above
    #the port´s name appears in the first QDialog
  @classmethod
  def retrieve_data(cls, parent = None):
     dlg = cls(parent)
     dlg.exec_()
     text = dlg.getPortText()
     return text

  def closeEvent(self, event):
     #Here is where I need to write the code to close the QDialog 
     #and it does not has to be an event

В методеcloseEventМне нужно написать необходимый код, чтобы я мог закрыть окно, и, используя ту же кнопку, которую я использую, чтобы открыть его, откройте его снова с последней информацией, которую оно показывало, когда я закрывал его.

Я пытался использоватьQSettings но это не сработало (возможно, я использовал это неправильно). И я попробовалshow() а такжеhide() классыPyQt тоже, но это не сработало. Надеюсь, ты сможешь мне помочь.

----- РЕДАКТИРОВАТЬ -----

Я редактировал код выше. и я добавил несколько методов для лучшего понимания. Итак, я открываюQDialog называетсяConfigurePort и это показывает это:

Красный круг, окружающий название порта. Это показано вQLabelи я беру этот текст изQDialog а затем распечатать его, когда я закрываюQDialog, Я подтверждаю это благодаря вопросу, который я задал ранее, который находится по этой ссылке:

Получение данных от ребенка с помощью PyQt

check_port метод, показанный в коде выше, открывает другойQDialog это прекрасно работает С этим я могу выбрать порты, которые мне нужны в моем компьютере. Итак, это не имеет значения.

Итак, после закрытияQDialog(и выбрав, например, «COM3», как вы можете видеть на картинке), мне нужно открыть его снова и увидеть ту же информацию, которая была показана до того, как я ее закрыл.

Я пытался добавить эту строку, используяQSettings :

self.settings = QSettings("MyCompany", "MyApp")
  if not self.settings.value("windowsState") == None:
    self.restoreState(self.settings.value("windowState"))

Но, как я уже говорил ранее, я думаю, что я не использовал это правильно, но я надеюсь, что я решу это с помощью чего-то более простого.

----- РЕДАКТИРОВАТЬ 2 -----

Благодаря помощи @Brendan Abel у меня есть этот код:

class ConfigurePort(QDialog):
  def __init__(self, parent):
    super(ConfigurePort, self).__init__(parent)
    uic.loadUi("configurePort.ui", self)

    self.myValue = 10
    self.restoreSettings()

    self.connect(self.btn_checkconn, SIGNAL("clicked()"), self.check_ports)
    self.buttonBox.button(QDialogButtonBox.Cancel).clicked.connect(self.close)
    self.buttonBox.button(QDialogButtonBox.Ok).clicked.connect(self.closeEvent)

    self.iniUi()

  def check_ports(self):
    pass

  def iniUi(self):
    pass #I just create some QLabels in here

  @classmethod
  def retrieve_data(cls, parent = None):
    dlg = cls(parent)
    dlg.exec_()
    text = dlg.getPortText()
    return text

  def closeEvent(self, event):
    self.saveSettings()
    super(QDialog,self).closeEvent(event)

  def saveSettings(self):
    settings = QSettings("MyOrg", "MyApp")
    settings.setValue("myValue", self.myValue)

  def restoreSettings(self):
    settings = QSettings("MyOrg", "MyApp")
    self.myValue = settings.value("myValue", self.myValue)

Это дает мне эту ошибку:TypeError: QWidget.closeEvent(QCloseEvent): argument 1 has unexpected type 'bool' Я знаю, что мне чего-то не хватает, но я этого не вижу.

Ответы на вопрос(2)

Ваш ответ на вопрос