Вот код qmainwindow :
Код 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
Код: Выделить всё
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
Красный круг, окружает имя порта. Это показано в Qlabel , и я беру этот текст из Qdialog , а затем распечатаю его, когда я закрываю qdialog . Я выполняю это благодаря вопросу, который я задавал ранее, который находится в этой ссылке:
Получение данных от ребенка с использованием pyqt
Метод проверки_порта , показанный в приведенном выше коде, открывает другой Qdialog , который отлично работает. С этим я могу выбрать порты, которые мне нужны на моем ПК. Таким образом, это не имеет значения.
Итак, после закрытия qdialog (и выбора, например, «com3», как вы можете увидеть на рисунке), мне нужно снова открыть ее, и увидеть ту же информацию, которая была показана до того, как я закрыл его.
я попытался добавить эту строку, используя qsettings :
, я попытался добавить эту строку, используя qsettings :
.self.settings = QSettings("MyCompany", "MyApp")
if not self.settings.value("windowsState") == None:
self.restoreState(self.settings.value("windowState"))
< /code>
Но, как я уже говорил, я думаю, что я не использовал это правильно, но я надеюсь, что я решу это, используя что-то проще.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)
< /code>
Это дает мне эту ошибку: < /p>
typeerror: qwidget.closeevent (qcloseevent): аргумент 1 имеет неожиданный тип 'bool' < /p>
< /blockquote>
Я знаю, что я что -то не хватает, но я не вижу.>
Подробнее здесь: https://stackoverflow.com/questions/373 ... last-state