LINUX.ORG.RU

Обратиться из модального окна в главное на Питоне

 


0

1

Нужно перед закрытием модального обратиться в главное и кое-что там выполнить. Вот начало кода главного: class MainWindow(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QMainWindow.__init__(self, parent)

Вот начало кода модального:

class mesh_form(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent)

Пытаюсь обратиться к главному через parent. но он пишет, что объект None

Модальный диалог не должен лезть в основное окно. Код, вызывающий этот диалог должен получить от него нужные данные и сделать то, что нужно.

panter_dsd ★★★★ ()
Ответ на: комментарий от panter_dsd

«должен получить от него нужные данные» - это значит диалог должен обратиться к главному и передать некие данные. А как обратиться??? я где-то читал, что через parent

cdi1989 ()
Ответ на: комментарий от panter_dsd

Мне нужно, чтобы нажимая «сохранить» в модальном, произошло что-то в главном, например вывод текста в боковой виджет MainWindow. К виджету понятно как обращаться - по имени. А к самому MainWindow как?????

cdi1989 ()
Ответ на: комментарий от cdi1989

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

twentypercentcooler ()
Ответ на: комментарий от twentypercentcooler

Ну вот я нажимаю сохранить в модальном, а в главном должен появиться label с текстом. Вот каким оператором мне достучаться до главного?

cdi1989 ()
Ответ на: комментарий от twentypercentcooler

Есть кнопка «сохранить» и обработчик ее нажатия и все это относится к коду модального окна. И мне нужно из этого обработчика передать инструкции для главного окна

cdi1989 ()
Ответ на: комментарий от cdi1989

У модального диалога делаешь геттер на нужные данные и получаешь:

def some_method(self):
    dialog = Dialog(self)
    if dialog.exec():
        self._some_label.setText(dialog.text())
panter_dsd ★★★★ ()
Ответ на: комментарий от panter_dsd

Должно быть так: я нажимаю на кнопку в главном окне и выскакивает модальное. Затем нажимаю на модальном «сохранить» и в главном записывается некий label

cdi1989 ()
Ответ на: комментарий от cdi1989

Заводишь у модального диалога метод label(). Вызываешь его после exec_(), предварительно проверив код возврата на QDialog.Accepted.

Если нужно из диалога получить действительно просто текст, то разумнее воспользоваться стандартным QInputDialog::getText

Amp ★★★ ()
Последнее исправление: Amp (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.