@DenisPy13

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

Как сделать дочернее окно, что бы из него можно было передать значения переменных?
Всем здравствуйте, если кто-то знает, напишите пожалуйста)
Есть главное меню с QPushButton и QTextBrowser
Надо, что бы через QPushButton открывалось окно с полем ввода имени и с кнопкой (сохранить), после чего, при нажатии на кнопку (сохранить) окно закрывалось и имя, которое ввели в поле ввода, вывелось в QTextBrowser в главном окне)
Объяснил, как бог)))
  • Вопрос задан
  • 1321 просмотр
Пригласить эксперта
Ответы на вопрос 1
sanya84
@sanya84
Фанатик Python 3
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_())
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы