Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt4 | Как передать сигнал из дочернего окна в родительское? [RSS Feed]

#1 Март 10, 2017 10:13:25

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

MrViktor
Я думаю, что тут другое поведение, а именно рисунок - это данные (модель), холст и прочее это представления и делегаты. Дальше думаю не стоит продолжать, все таки немного не по теме.
Понятное дело что фотошоп устроен несколько сложнее чем родительское-дочернее окно. Это просто самый банальный пример где нужно передавать данные из окна не закрывая его. Смысл его что вы делаете какието изменения в дочернем окне : изменяете ползунок яркости/прозрачности/частоты/амплитуды/НЕХ, убираетеставите галочку показать\скрыть, меняете размер шрифта, количтество столбцов-колонк, размер ячеек в сетке, еще какунить опцию и сразу видите изменения, если вас все устраивает жмете ОК и закрываете окно, если нет еще раз меняете пока не достигнете нужного результата.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#2 Март 10, 2017 10:46:38

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

MrViktor
Извиняюсь, но я даже не представляю таких конверторов и калькуляторов. К примеру есть некая программа с главным окном (родитель), из нее вызываем конвертер (дочернее). В дочернем мы что-то конвертируем и возвращаем родителю, так? Но зачем оставлять открытым дочернее окно?
Собственно Pendom основной смысл передал.
Дам и свой пример, описывающий суть вопроса, чтобы Вам было понятно.
Допустим, что дочернее окно считает площадь многогранной фигуры, на описание которой нужно с десяток полей.
Программа родитель рассчитывает стоимость покраски этой фигуры, используя тоже десяток полей - входных данных. Однако родителю нужна площадь для запуска расчёта.
В данном примере видно, что закрывать дочернее окно после первого вода данных просто глупо, для небольших изменений придётся заполнять все 10 полей или дополнительно сохранять исходные данные в отдельном файле, а потом их подгружать - но это очень трудоёмко.

Отредактировано Kyrym (Март 10, 2017 10:47:59)

Офлайн

#3 Март 10, 2017 11:04:46

MrViktor
Зарегистрирован: 2017-03-09
Сообщения: 83
Репутация: +  8  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

PEHDOM
Это просто самый банальный пример где нужно передавать данные из окна не закрывая его.
Вы не поняли моего ответа, с моделью данных может работать несколько представлений. Таким образом дочернее не чего не передает родителю, родитель просто отображает изменения из модели сделанные дочерним окном. Извиняюсь если не совсем понятно объясняю.
Kyrym
Допустим, что дочернее окно считает площадь многогранной фигуры, на описание которой нужно с десяток полей.
Программа родитель рассчитывает стоимость покраски этой фигуры, используя тоже десяток полей - входных данных. Однако родителю нужна площадь для запуска расчёта.
А не проще сделать в дочернем просто поля ввода, а расчет по ним пусть производит родитель? Думаю так гораздо проще, родитель получил данные полей дочернего окна, произвел расчет площади ну и дальнейшие манипуляции.

Офлайн

#4 Март 10, 2017 12:03:14

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

MrViktor
А не проще сделать в дочернем просто поля ввода, а расчет по ним пусть производит родитель? Думаю так гораздо проще, родитель получил данные полей дочернего окна, произвел расчет площади ну и дальнейшие манипуляции.
Т.е передавать родителю не одну переменную, а десяток? Даже не в этом дело, всё равно данные нужно передавать, не закрывая дочернее окно.

Офлайн

#5 Март 10, 2017 12:26:15

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

MrViktor
Вы не поняли моего ответа, с моделью данных может работать несколько представлений. Таким образом дочернее не чего не передает родителю, родитель просто отображает изменения из модели сделанные дочерним окном. Извиняюсь если не совсем понятно объясняю.
Да нет, я прекрасно вас понял, но ИМХО какая разница как это просходит? Передат ли дочернее окно данные прямо родителю, или оно эти данные передает/модифицирует модели, а уже оотуда инициируется изменения родительского окна(или оно само видит что данные поменялись и соответвенно реагирует). Суть то не меняеться. Дочернее окно изменяя данные остается открытым.

Я думаю что у Kyrym в его программе тоже все не так просто, он просто набросал запускабельный пример и спросил: “как реализовать”?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 10, 2017 12:29:03)

Офлайн

#6 Март 10, 2017 12:42:34

MrViktor
Зарегистрирован: 2017-03-09
Сообщения: 83
Репутация: +  8  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

Kyrym
Т.е передавать родителю не одну переменную, а десяток?
Не передавать, чтоб родитель (кнопка расчет площади на форме родителя) брал данные из полей сам (у дочернего только кнопка закрыть и куча полей) тогда закрывать ничего не нужно. Может я конечно ошибаюсь, с Qt еще плохо знаком, но мне кажется так проще.
Вот от такого моего мышления, я и дошел до того, что мне оно пока не нужно, но примеры себе сохранил.

Офлайн

#7 Март 10, 2017 13:30:51

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2683
Репутация: +  182  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

> ну-ну…

Вот по этому тебе и бесполезно помогать. Ты всё равно никого не послушаешь.

> имхо усложняешь задачу делай коннект в приложении

У тебя на диалоге 100500 виджетов. Ты их все подключать будешь?



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Март 10, 2017 15:23:39

MrViktor
Зарегистрирован: 2017-03-09
Сообщения: 83
Репутация: +  8  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

Rodegast
Вот по этому тебе и бесполезно помогать. Ты всё равно никого не послушаешь.
Не-нет, это не моя задача (не топик стартер), я просто рассуждал так сказать, чтоб почерпнуть на будущее полезной инфы и не надо так категорично. Вот от вас и поступила критика к которой грех не прислушаться, ну на 100500 полей я не рассчитывал (полей 10 от силы) коннект в плане сигнал слот?
До разберусь с текущими делами, попробую разные варианты данной задачи, спортивный интерес появился

Офлайн

#9 Март 10, 2017 15:37:34

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2683
Репутация: +  182  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

> Не-нет, это не моя задача

Я это Kyrym-у писал.

> ну на 100500 полей я не рассчитывал (полей 10 от силы) коннект в плане сигнал слот?

Да это connect. Смысл в том что если нужно соединить 2 виджета, то это реально, но если их даже 10 на окно, то начнутся проблемы. Да и к чему ты их подключать будешь? К виджетам в основном окне?

P.S. На самом деле задача довольно лёгкая.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Март 10, 2017 15:38:11)

Офлайн

#10 Март 10, 2017 15:39:12

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

MrViktor
Не передавать, чтоб родитель (кнопка расчет площади на форме родителя) брал данные из полей сам (у дочернего только кнопка закрыть и куча полей) тогда закрывать ничего не нужно. Может я конечно ошибаюсь, с Qt еще плохо знаком, но мне кажется так проще.
Соль в том, что в моём случае дочернее окно может использоваться как независимая программа, поэтому логика должна присутствовать в дочернем.
PEHDOM
Я думаю что у Kyrym в его программе тоже все не так просто, он просто набросал запускабельный пример и спросил: “как реализовать”?
Совершенно верно.
Rodegast
Вот по этому тебе и бесполезно помогать. Ты всё равно никого не послушаешь.
Да ладно. Когда мне нормально отвечают, тогда я этим пользуюсь. И большое спасибо всем людям с форумов, что мне помогли. Благодаря им я уже написал несколько работающих программ, что дают мне требуемый результат.
Другое дело, что я расширяю возможности своих программ, а для этого нужны новые знания. Я и так самостоятельно ковыряюсь с некоторыми для меня сложными функциями и не закидываю форум лишними вопросами.
И вообще, какой смысл писать сообщения типа “так делать не надо и точка” без всяких объяснений. Максимум - это “читайте иностранную литературу в оригинале”. Этим делу не поможешь… Зачем тогда утруждать себя ответами в принципе? (это риторический вопрос).

Офлайн

  • Начало
  • » GUI
  • » PyQt4 | Как передать сигнал из дочернего окна в родительское? [RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version