Написать рандомно на кнопке слово CLICK
Проблема, в том, что я хочу сделать чтобы рандомно на каждой кнопке отображалось слово CLICK.
И если на кнопку со словом CLICK нажали, то она засветилась зелёным, ну а если нажали на кнопку БЕЗ слова CLICK, то она подсвечивалась красным.
Помогите пожалуйста, я пока что просто плохо знаю библиотеку PyQt5. И не знаю все команды.
Пример кода:
###
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QVBoxLayout,
QHBoxLayout, QPushButton, QMessageBox
from random import*
###
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Fast Clicker')
self.resize(800,500)
button1 = QPushButton()
button2 = QPushButton()
button3 = QPushButton()
button4 = QPushButton()
h_layout = QHBoxLayout()
h_layout.addWidget(button1)
h_layout.addWidget(button2)
h_layout.addWidget(button3)
h_layout.addWidget(button4)
main_layout = QVBoxLayout(self)
main_layout.addLayout(h_layout)
###
Stylesheet = '''
QWidget {
background-color:rgb(100,200, 255);
}
QPushButton {
background-color:yellow;
max-width: 96px;
max-height: 125px;
border: 8px solid rgb(80, 80, 255);
}
QPushButton:hover:pressed {
background-color: red;
}
'''
###
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
app.setStyleSheet(Stylesheet)
ex = MainWindow()
ex.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, \
QLabel, QVBoxLayout, QHBoxLayout, QPushButton, QMessageBox
from random import choice
class PushButton(QPushButton):
def __init__(self, i, parent=None):
super().__init__(parent)
self.listName = ['CLICK', '']
self.setText(choice(self.listName))
self.setObjectName(f'button{i}')
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Fast Clicker')
self.resize(800, 500)
self.listButton = []
h_layout = QHBoxLayout()
for i in range(4):
button = PushButton(i, self)
button.clicked.connect(lambda ch, btn=button: self.button_clicked(btn))
self.listButton.append(button)
h_layout.addWidget(button)
main_layout = QVBoxLayout(self)
main_layout.addLayout(h_layout)
def button_clicked(self, btn):
for button in self.listButton:
if button.objectName() == btn.objectName():
if button.text() == 'CLICK':
button.setStyleSheet('background-color: green;')
else:
button.setStyleSheet('background-color: red;')
else:
button.setStyleSheet('background-color: #D98C00;')
Stylesheet = '''
QWidget {
background-color:rgb(100,200, 255);
}
QPushButton {
background-color: #D98C00;
min-width: 96px;
max-width: 96px;
min-height: 96px;
max-height: 96px;
border-radius: 48px; /* круглый */
border: 2px solid #09009B;
font-size: 24px;
}
QPushButton:hover:pressed {
background-color: red;
color: #fff;
}
QPushButton:hover {
background-color: #0ff;
border: 2px solid #FFA6D5;
}
'''
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
app.setStyleSheet(Stylesheet)
ex = MainWindow()
ex.show()
sys.exit(app.exec_())

