Форум сайта python.su
3
У меня, наконец-то, кончилась запарка, и я спешу к данному обсуждению.
RodegastНа самом деле, меня интересует оба варианта. Есть случаи, когда надо передать данные из дочернего окна и не закрывать его.
> А у топикстартера оно не должно закрываться после нажатия кнопки “Жми”
Должно. Он просто это не сделал.
Rodegastну-ну…
что надо учится пользоваться дизайнером, а не пытаться “писать руками”
Офлайн
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_()
Офлайн
8
RodegastЯ это и имел в виду, немного не правильно выразился.
Нет. Он создаёт просто окно и пытается использовать его как диалог.
KyrymЯ тоже по началу подумал, что меня интересуют оба варианта, но потом подумал, где мне может понадобиться из дочернего передавать в родителя информацию (сигнал) без закрытия первого и не смог себе представить такой задачи. Кто нибудь может сказать, где такое действие необходимо? чисто для примера.
меня интересует оба варианта.
Офлайн
3
MrViktorКонечно!
Кто нибудь может сказать, где такое действие необходимо?
Отредактировано Kyrym (Март 10, 2017 07:47:08)
Офлайн
3
vic57. Что означает данный код?
Что я понял:
- этот код вставляется в родительский файл;
- в поле вводим текст, жмём enter, сигнал запускает функцию pressed;
- функция вставляет текст в label.
А где связь с дочерним окном?
Офлайн
3
PEHDOMПервый и третий варианты не работают.
…
Офлайн
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
KyrymИзвиняюсь, но я даже не представляю таких конверторов и калькуляторов. К примеру есть некая программа с главным окном (родитель), из нее вызываем конвертер (дочернее). В дочернем мы что-то конвертируем и возвращаем родителю, так? Но зачем оставлять открытым дочернее окно? Да и можно сделать наподобие QDateEdit, типа всплывающего калькулятора, как в 1С.
Это всякого рода расчётные программы (калькуляторы, конверторы).
Офлайн
294
MrViktor
где мне может понадобиться из дочернего передавать в родителя информацию (сигнал) без закрытия первого и не смог себе представить такой задачи. Кто нибудь может сказать, где такое действие необходимо? чисто для примера.
Kyrymпроверте внимательно может неправильно чтото скопировали , у меня все варианты работали.
Первый и третий варианты не работают.
[code python][/code]
Отредактировано PEHDOM (Март 10, 2017 10:01:00)
Офлайн
8
PEHDOMЯ думаю, что тут другое поведение, а именно рисунок - это данные (модель), холст и прочее это представления и делегаты. Дальше думаю не стоит продолжать, все таки немного не по теме.
Банально откройте в фотошопе любой рисунок, вызовите Изображение - корекция - яркость/контрасность
Офлайн