@DenisPy13

Как сделать дочернее окно?

Как сделать дочернее окно, что бы из него можно было передать значения переменных?
Всем здравствуйте, если кто-то знает, напишите пожалуйста)
Есть главное меню с QPushButton и QTextBrowser
Надо, что бы через QPushButton открывалось окно с полем ввода имени и с кнопкой (сохранить), после чего, при нажатии на кнопку (сохранить) окно закрывалось и имя, которое ввели в поле ввода, вывелось в QTextBrowser в главном окне)
Объяснил, как бог)))
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 1
sanya84
@sanya84
import os
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

def log_uncaught_exceptions(ex_cls, ex, tb):
    import traceback
    text = '{}: {}:\n\n'.format(ex_cls.__name__, ex)
    text += ''.join(traceback.format_tb(tb))
    QMessageBox.critical(None, 'Ошибка!', text)
    
sys.excepthook = log_uncaught_exceptions


class EnterName(QWidget):
    text_value = pyqtSignal(str)
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 300, 50)
        self.setWindowTitle('Введите имя')

        self.button = QPushButton('Сохранить', self)
        self.button.clicked.connect(self.bEvent)
        self.button.move(120, 30)

        self.lEdid = QLineEdit(self)
        self.lEdid.setGeometry(0, 0, 300, 30)

    @pyqtSlot()
    def bEvent(self):
        self.text_value.emit(self.lEdid.text())
        self.hide()


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 420, 280)
        self.setWindowTitle('Exsample')

        self.button = QPushButton('Имя', self)
        self.button.move(180, 260)
        self.button.clicked.connect(self.bEvent)

        self.tb = QTextBrowser(self)
        self.tb.setGeometry(0, 0, 420, 260)

        self.eName = EnterName()
        self.eName.text_value.connect(self.signalHandler)

    def bEvent(self):
        self.eName.show()

    def signalHandler(self, text):
        self.tb.append(text)

if __name__ == '__main__':

    app = QApplication(sys.argv)
    example = Example()
    example.show()
    sys.exit(app.exec_())
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Popmechanic Москва
от 100 000 до 150 000 руб.
Panda Media Нижний Новгород
от 70 000 руб.
НЛ Континент Новосибирск
от 60 000 до 100 000 руб.
14 авг. 2018, в 22:43
350 руб./за проект
14 авг. 2018, в 19:03
10000 руб./за проект
14 авг. 2018, в 18:10
1000 руб./в час