Последовательное добавление виджетов
Я хочу по нажатию на кнопку 'КНОПКА1' переменная but_1 добавить на экран кнопку 'КНОПКА2' переменная but_2.
По нажатию на кнопку 'КНОПКА2' переменная but_2 добавить на экран кнопку 'КНОПКА3' переменная but_3.
По нажатию на кнопку 'КНОПКА3' переменная but_3 добавить на экран рамку 'ТЕКСТ2' переменная text_2.
Начальный вид окна
После нажатия на кнопку 'КНОПКА1' переменная but_1
После нажатия на кнопку 'КНОПКА2' переменная but_2
После нажатия на 'КНОПКА3' переменная but_3
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Window1(object):
def setupUi(self, Window1):
Window1.setObjectName('Window1')
Window1.resize(450, 336)
Window1.setWindowTitle(' ')
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap('icon.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
Window1.setWindowIcon(icon)
Window1.setStyleSheet('background-color: #c3dce5')
self.Main1 = QtWidgets.QWidget(Window1)
self.Main1.setObjectName('Main1')
self.but_1 = QtWidgets.QPushButton(self.Main1)
self.but_1.setGeometry(QtCore.QRect(0, 276, 451, 60))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(14)
self.but_1.setFont(font)
self.but_1.setStyleSheet('QPushButton {\n'
' color: #000000;\n'
' background-color: #8598a6;\n'
' border-radius: 0;\n'
'}\n'
'\n'
'QPushButton: pressed {\n'
' background-color: #667480;\n'
'}\n'
'')
self.but_1.setObjectName('but_1')
self.text_1 = QtWidgets.QLabel(self.Main1)
self.text_1.setGeometry(QtCore.QRect(0, 0, 451, 60))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.text_1.setFont(font)
self.text_1.setStyleSheet('background-color: #4c5359;\n'
'border:2px solid#363940;\n'
'color:#000000')
self.text_1.setAlignment(QtCore.Qt.AlignCenter)
self.text_1.setObjectName('text_1')
Window1.setCentralWidget(self.Main1)
self.retranslateUi(Window1)
QtCore.QMetaObject.connectSlotsByName(Window1)
def retranslateUi(self, Window1):
_translate = QtCore.QCoreApplication.translate
self.but_1.setText(_translate('Window1', 'КНОПКА1'))
self.text_1.setText(_translate('Window1', 'ТЕКСТ1'))
class MainWindow(QtWidgets.QMainWindow, Ui_Window1):
def __init__(self):
super().__init__()
self.setupUi(self)
self.but_1.clicked.connect(self.create1)
#Создать 'КНОПКА3' после нажатия на 'КНОПКА2'
#self.but_2.clicked.connect(self.create2)
#Создать 'ТЕКСТ2' после нажатия на 'КНОПКА3'
#self.but_3.clicked.connect(self.create3)
def create1(self):
self.but_2 = QtWidgets.QPushButton(self.Main1)
self.but_2.setGeometry(QtCore.QRect(0, 60, 225, 60))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(14)
self.but_2.setFont(font)
self.but_2.setStyleSheet('QPushButton {\n'
' color: #000000;\n'
' background-color: #8598a6;\n'
' border-radius: 0;\n'
'}\n'
'\n'
'QPushButton: pressed {\n'
' background-color: #667480;\n'
'}\n'
'')
self.but_2.setObjectName('but_2')
self.but_2.setText('КНОПКА2')
self.but_2.show()
def create2(self):
self.but_3 = QtWidgets.QPushButton(self.Main1)
self.but_3.setGeometry(QtCore.QRect(225, 60, 225, 60))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(14)
self.but_3.setFont(font)
self.but_3.setStyleSheet('QPushButton {\n'
' color: #000000;\n'
' background-color: #8598a6;\n'
' border-radius: 0;\n'
'}\n'
'\n'
'QPushButton: pressed {\n'
' background-color: #667480;\n'
'}\n'
'')
self.but_3.setObjectName('but_3')
self.but_3.setText('КНОПКА3')
self.but_3.show()
def create3(self):
self.text_2 = QtWidgets.QLabel(self.Main1)
self.text_2.setGeometry(QtCore.QRect(0, 120, 451, 60))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.text_2.setFont(font)
self.text_2.setStyleSheet('background-color: #4c5359;\n'
'border:2px solid#363940;\n'
'color:#000000')
self.text_2.setAlignment(QtCore.Qt.AlignCenter)
self.text_2.setObjectName('text_2')
self.but_3.setText('ТЕКСТ2')
self.but_3.show()
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
ui = MainWindow()
ui.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Вы почти были у цели.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Window1(object):
def setupUi(self, Window1):
Window1.setObjectName('Window1')
Window1.resize(450, 336)
Window1.setWindowTitle(' ')
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap('icon.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
Window1.setWindowIcon(icon)
Window1.setStyleSheet('background-color: #c3dce5')
self.Main1 = QtWidgets.QWidget(Window1)
self.Main1.setObjectName('Main1')
self.but_1 = QtWidgets.QPushButton(self.Main1)
self.but_1.setGeometry(QtCore.QRect(0, 276, 451, 60))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(14)
self.but_1.setFont(font)
self.but_1.setStyleSheet('QPushButton {\n'
' color: #000000;\n'
' background-color: #8598a6;\n'
' border-radius: 0;\n'
'}\n'
'\n'
'QPushButton: pressed {\n'
' background-color: #667480;\n'
'}\n'
'')
self.but_1.setObjectName('but_1')
self.text_1 = QtWidgets.QLabel(self.Main1)
self.text_1.setGeometry(QtCore.QRect(0, 0, 451, 60))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.text_1.setFont(font)
self.text_1.setStyleSheet('background-color: #4c5359;\n'
'border:2px solid#363940;\n'
'color:#000000')
self.text_1.setAlignment(QtCore.Qt.AlignCenter)
self.text_1.setObjectName('text_1')
Window1.setCentralWidget(self.Main1)
self.retranslateUi(Window1)
QtCore.QMetaObject.connectSlotsByName(Window1)
def retranslateUi(self, Window1):
_translate = QtCore.QCoreApplication.translate
self.but_1.setText(_translate('Window1', 'КНОПКА1'))
self.text_1.setText(_translate('Window1', 'ТЕКСТ1'))
class MainWindow(QtWidgets.QMainWindow, Ui_Window1):
def __init__(self):
super().__init__()
self.setupUi(self)
self.but_1.clicked.connect(self.create1)
#Создать 'КНОПКА3' после нажатия на 'КНОПКА2'
#self.but_2.clicked.connect(self.create2)
#Создать 'ТЕКСТ2' после нажатия на 'КНОПКА3'
#self.but_3.clicked.connect(self.create3)
def create1(self):
self.but_2 = QtWidgets.QPushButton(self.Main1)
self.but_2.setGeometry(QtCore.QRect(0, 60, 225, 60))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(14)
self.but_2.setFont(font)
self.but_2.setStyleSheet('QPushButton {\n'
' color: #000000;\n'
' background-color: #8598a6;\n'
' border-radius: 0;\n'
'}\n'
'\n'
'QPushButton: pressed {\n'
' background-color: #667480;\n'
'}\n'
'')
self.but_2.setObjectName('but_2')
self.but_2.setText('КНОПКА2')
self.but_2.show()
self.but_2.clicked.connect(self.create2) # +++
def create2(self):
self.but_3 = QtWidgets.QPushButton(self.Main1)
self.but_3.setGeometry(QtCore.QRect(225, 60, 225, 60))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(14)
self.but_3.setFont(font)
self.but_3.setStyleSheet('QPushButton {\n'
' color: #000000;\n'
' background-color: #8598a6;\n'
' border-radius: 0;\n'
'}\n'
'\n'
'QPushButton: pressed {\n'
' background-color: #667480;\n'
'}\n'
'')
self.but_3.setObjectName('but_3')
self.but_3.setText('КНОПКА3')
self.but_3.show()
self.but_3.clicked.connect(self.create3) # +++
def create3(self):
self.text_2 = QtWidgets.QLabel(self.Main1)
self.text_2.setGeometry(QtCore.QRect(0, 120, 451, 60))
font = QtGui.QFont()
font.setFamily('Montserrat')
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.text_2.setFont(font)
self.text_2.setStyleSheet('background-color: #4c5359;\n'
'border:2px solid#363940;\n'
'color:#000000')
self.text_2.setAlignment(QtCore.Qt.AlignCenter)
self.text_2.setObjectName('text_2')
self.text_2.setText('ТЕКСТ2') # +++
self.text_2.show() # +++
# self.but_3.setText('ТЕКСТ2')
# self.but_3.show()
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
ui = MainWindow()
ui.show()
sys.exit(app.exec_())




