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

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Открытие QDialog и сохранение последнего состояния

Сообщение Anonymous »

Я пытаюсь открыть qdialog из qmainwindow , и после закрытия `qdialog, если мне нужно снова открыть его, он должен открыть и показать ту же информацию, которая была, когда я ее закрываю.
Вот код 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
Что делает этот код, это создает кнопку в моем 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 , мне нужно написать необходимый код, чтобы я мог закрыть окно и использовать ту же кнопку, которую я использую для его открытия, открыть его снова с последней информацией, которую он показал, когда я закрыл его. И я попробовал Show () и hide () классы pyqt тоже, но это не сработало. Надеюсь, вы сможете мне помочь. И я добавил несколько методов для лучшего понимания. Итак, я открываю qdialog называемый configureport и показывает это:

Красный круг, окружает имя порта. Это показано в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»