Добавление рамки на экран после нажатия на кнопку

Как добавить рамку на экран после нажатия на кнопку?

Чтобы из этого

введите сюда описание изображения

после нажатия на кнопку получить это

введите сюда описание изображения

from PyQt5 import QtCore, QtGui, QtWidgets

font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)

class Ui_Window3(object):
    def setupUi(self, Window3):
        Window3.setObjectName('Window3')
        Window3.resize(450, 336)
        Window3.setWindowTitle(' ')
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap('icon.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        Window3.setWindowIcon(icon)
        Window3.setStyleSheet('background-color: #fefff7')
        self.Main3 = QtWidgets.QWidget(Window3)
        self.Main3.setObjectName('Main3')

        self.but_5 = QtWidgets.QPushButton(self.Main3)
        self.but_5.setGeometry(QtCore.QRect(0, 276, 450, 60))
        self.but_5.setFont(font)
        self.but_5.setStyleSheet('QPushButton {color: #000000; background-color: #c7dcd0; border-radius: 0;} QPushButton: pressed {background-color: #9babb2;}')
        self.but_5.setObjectName('but_5')

        Window3.setCentralWidget(self.Main3)

        self.retranslateUi(Window3)
        QtCore.QMetaObject.connectSlotsByName(Window3)

        self.but_5.clicked.connect(self.results)

    def retranslateUi(self, Window3):
        _translate = QtCore.QCoreApplication.translate
        self.but_5.setText(_translate('Window3', 'КНОПКА'))

    def results(self):
        #рамка которую нужно добавить на экран после нажатие на кнопку
        self.text_3 = QtWidgets.QLabel(self.Main3)
        self.text_3.setGeometry(QtCore.QRect(0, 138, 450, 60))
        self.text_3.setFont(font)
        self.text_3.setStyleSheet('background-color: #c7dcd0; border:2px solid#9babb2; color:#000000')
        self.text_3.setText('РАМКА')
        self.text_3.setAlignment(QtCore.Qt.AlignCenter)
        self.text_3.setObjectName('text_3')

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Window3 = QtWidgets.QMainWindow()
    ui = Ui_Window3()
    ui.setupUi(Window3)
    Window3.show()
    sys.exit(app.exec_())

Ответы (1 шт):

Автор решения: S. Nick

Не изменяйте код, сгенерированный Qt Designer. Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.

void QWidget::show()

Показывает виджет и его дочерние виджеты.

from PyQt5 import QtCore, QtGui, QtWidgets

font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)

class Ui_Window3(object):
    def setupUi(self, Window3):
        Window3.setObjectName('Window3')
        Window3.resize(450, 336)
        Window3.setWindowTitle(' ')
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap('icon.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        Window3.setWindowIcon(icon)
        Window3.setStyleSheet('background-color: #fefff7')
        self.Main3 = QtWidgets.QWidget(Window3)
        self.Main3.setObjectName('Main3')

        self.but_5 = QtWidgets.QPushButton(self.Main3)
        self.but_5.setGeometry(QtCore.QRect(0, 276, 450, 60))
        self.but_5.setFont(font)
        self.but_5.setStyleSheet('QPushButton {color: #000000; background-color: #c7dcd0; border-radius: 0;} QPushButton: pressed {background-color: #9babb2;}')
        self.but_5.setObjectName('but_5')

        Window3.setCentralWidget(self.Main3)

        self.retranslateUi(Window3)
        QtCore.QMetaObject.connectSlotsByName(Window3)

    def retranslateUi(self, Window3):
        _translate = QtCore.QCoreApplication.translate
        self.but_5.setText(_translate('Window3', 'КНОПКА'))


class MainWindow(QtWidgets.QMainWindow, Ui_Window3):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.but_5.clicked.connect(self.results)

    def results(self):
        #рамка которую нужно добавить на экран после нажатие на кнопку
        self.text_3 = QtWidgets.QLabel(self.Main3)
        self.text_3.setGeometry(QtCore.QRect(0, 138, 450, 60))
        self.text_3.setFont(font)
        self.text_3.setStyleSheet('''
            background-color: #c7dcd0; 
            border:2px solid #9babb2; 
            color: #000000;
        ''')
        self.text_3.setText('РАМКА')
        self.text_3.setAlignment(QtCore.Qt.AlignCenter)
        self.text_3.setObjectName('text_3')
        self.text_3.show()                                         # +++ 
        
        
if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка