Уведомления

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

#1 Март 9, 2017 19:40:04

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

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

У меня, наконец-то, кончилась запарка, и я спешу к данному обсуждению.

Rodegast
> А у топикстартера оно не должно закрываться после нажатия кнопки “Жми”
Должно. Он просто это не сделал.
На самом деле, меня интересует оба варианта. Есть случаи, когда надо передать данные из дочернего окна и не закрывать его.
Rodegast
что надо учится пользоваться дизайнером, а не пытаться “писать руками”
ну-ну…


Офлайн

#2 Март 9, 2017 22:31:56

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

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

Kyrym
На самом деле, меня интересует оба варианта. Есть случаи, когда надо передать данные из дочернего окна и не закрывать его.
имхо усложняешь задачу
делай коннект в приложении
 from PyQt4.Qt import *
def pressed():
    label.setText(edit.text())
if __name__ == "__main__":
    app = QApplication([])
    label = QLabel()
    label.resize(300,50)
    edit = QLineEdit()
    edit.returnPressed.connect(pressed)
    label.move(0,0)
    edit.move(0,100)
    label.show()
    edit.show()
    app.exec_()

Офлайн

#3 Март 10, 2017 06:41:55

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

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

Rodegast
Нет. Он создаёт просто окно и пытается использовать его как диалог.
Я это и имел в виду, немного не правильно выразился.

Kyrym
меня интересует оба варианта.
Я тоже по началу подумал, что меня интересуют оба варианта, но потом подумал, где мне может понадобиться из дочернего передавать в родителя информацию (сигнал) без закрытия первого и не смог себе представить такой задачи. Кто нибудь может сказать, где такое действие необходимо? чисто для примера.

Офлайн

#4 Март 10, 2017 07:46:12

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

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

MrViktor
Кто нибудь может сказать, где такое действие необходимо?
Конечно!
Это всякого рода расчётные программы (калькуляторы, конверторы). Конечно, эти программы можно сделать отдельно, но тогда передача информации будет происходить через буфер, что будет приводить к лишним кнопкам. Суть в том, что после передачи данных, дочернее окно показывает некую информацию, введённые данные, позволяет осуществить повторную отправку данных с небольшим корректированием переменных.

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

Офлайн

#5 Март 10, 2017 08:03:02

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

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

vic57. Что означает данный код?
Что я понял:
- этот код вставляется в родительский файл;
- в поле вводим текст, жмём enter, сигнал запускает функцию pressed;
- функция вставляет текст в label.
А где связь с дочерним окном?

Офлайн

#6 Март 10, 2017 09:01:36

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

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

PEHDOM
Первый и третий варианты не работают.
А вот второй заработал, за что спасибо!

Офлайн

#7 Март 10, 2017 09:24:52

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

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

Kyrym
А где связь с дочерним окном
зачем? у тебя нет ни наследования, ни общего лэйаута, только обмен данными между виджетами.
 from PyQt4.Qt import *
import sys
class W(QWidget):
    def __init__(self,parent=None):
        QWidget.__init__(self)
        self.edit = QLineEdit()
        self.btn = QPushButton('Push')
        layout = QVBoxLayout(self)
        layout.addWidget(self.edit)
        layout.addWidget(self.btn)
        
def btnClicked():
    if w2.isVisible(): w2.hide()
    elif w2.isHidden(): w2.show()
def editPressed():
    w1.edit.setText(w2.edit.text())
    
def app_quit():
    sys.exit()
    
if __name__ == "__main__":
    app = QApplication([])
    app.lastWindowClosed.connect(app_quit)
    w1 = W()
    w1.edit.setReadOnly(True)
    w2 = W()
    w2.btn.setEnabled(False)
    w1.btn.clicked.connect(btnClicked)
    w2.edit.returnPressed.connect(editPressed)
    w1.move(100,100)
    w1.show()
    app.exec_()

Отредактировано vic57 (Март 10, 2017 09:36:12)

Офлайн

#8 Март 10, 2017 09:25:26

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

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

Kyrym
Это всякого рода расчётные программы (калькуляторы, конверторы).
Извиняюсь, но я даже не представляю таких конверторов и калькуляторов. К примеру есть некая программа с главным окном (родитель), из нее вызываем конвертер (дочернее). В дочернем мы что-то конвертируем и возвращаем родителю, так? Но зачем оставлять открытым дочернее окно? Да и можно сделать наподобие QDateEdit, типа всплывающего калькулятора, как в 1С.
Может просто мне таких задач не попадалось.

Офлайн

#9 Март 10, 2017 09:51:52

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

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

MrViktor
где мне может понадобиться из дочернего передавать в родителя информацию (сигнал) без закрытия первого и не смог себе представить такой задачи. Кто нибудь может сказать, где такое действие необходимо? чисто для примера.

Банально откройте в фотошопе любой рисунок, вызовите Изображение - корекция - яркость/контрасность
у вас появиться окно с двумя ползунками и кнопками ОК и Calcel. Вы изменяете положение ползунокв, и сразу видите изменения на холсте. вы можете легко подобрать нужные вам значения.А теперь представте что изменения на холсте будут появляться только при нажатии кнопки ОК и закрытии окна. Простая операция по коррекции ярктости превратиться в адъ.



Kyrym
Первый и третий варианты не работают.
проверте внимательно может неправильно чтото скопировали , у меня все варианты работали.



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

Отредактировано PEHDOM (Март 10, 2017 10:01:00)

Офлайн

#10 Март 10, 2017 09:56:49

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

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

PEHDOM
Банально откройте в фотошопе любой рисунок, вызовите Изображение - корекция - яркость/контрасность
Я думаю, что тут другое поведение, а именно рисунок - это данные (модель), холст и прочее это представления и делегаты. Дальше думаю не стоит продолжать, все таки немного не по теме.

Офлайн

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

Board footer

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

Powered by DjangoBB

Lo-Fi Version