Как создать label при нажатии на кнопку
Мне нужно сделать так, чтобы при нажатии на кнопку PushButton появлялся label. Как это сделать?
Я хочу написать игру wordle, вот код, в котором есть кнопка начать игру и label с текстом "я загадал слово", который должен появляться по нажатию на кнопку.
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(750, 750)
Form.setMaximumSize(QtCore.QSize(1920, 1080))
Form.setStyleSheet("background-color: rgb(0, 0, 0);")
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(225, 70, 300, 100))
font = QtGui.QFont()
font.setPointSize(24)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setMouseTracking(False)
self.pushButton.setStyleSheet("background-color: rgb(255, 85, 0);")
self.pushButton.setObjectName("pushButton")
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(245, 180, 260, 90))
font = QtGui.QFont()
font.setPointSize(15)
font.setBold(True)
font.setItalic(False)
font.setUnderline(False)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet("background-color: rgb(255, 85, 0);")
self.label.setObjectName("label")
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Wordle - Game"))
self.pushButton.setText(_translate("Form", "НАЧАТЬ ИГРУ"))
self.label.setText(_translate("Form", " Я ЗАГАДАЛ СЛОВО"))
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
После того как вы получили код, сгенерированный Qt Designer, cоздайте другой класс, который наследуется от соответствующего виджета и используйте созданный класс для его заполнения.
import sys
from random import randint, choices
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.Qt import *
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(750, 750)
Form.setMaximumSize(QtCore.QSize(1920, 1080))
Form.setStyleSheet("background-color: rgb(0, 0, 0);")
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(225, 70, 300, 100))
font = QtGui.QFont()
font.setPointSize(24)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setMouseTracking(False)
self.pushButton.setStyleSheet("background-color: rgb(255, 85, 0);")
self.pushButton.setObjectName("pushButton")
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(245, 180, 260, 90))
font = QtGui.QFont()
font.setPointSize(15)
font.setBold(True)
font.setItalic(False)
font.setUnderline(False)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet("background-color: rgb(255, 85, 0);")
self.label.setObjectName("label")
self.retranslateUi(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Wordle - Game"))
self.pushButton.setText(_translate("Form", "НАЧАТЬ ИГРУ"))
self.label.setText(_translate("Form", " Я ЗАГАДАЛ СЛОВО"))
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
class MainWindow(QtWidgets.QWidget, Ui_Form):
def __init__(self):
super().__init__()
self.setupUi(self)
# создайте список каких-то слов
self.words = ['первое', 'второе', 'третье', 'привет', 'мир']
self.label.setAlignment(Qt.AlignCenter)
# Кнопка излучает сигнал clicked(), когда она активируется мышью, пробелом
# или сочетанием клавиш. Подключитесь к этому сигналу, чтобы выполнить действие кнопки.
# https://doc.qt.io/qt-5/signalsandslots.html
self.pushButton.clicked.connect(self.clicked_button)
def clicked_button(self):
# https://docs.python.org/3/library/random.html#random.choices
self.word_new = choices(self.words)[0]
self.label.setText(self.word_new)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
