Подскажите, как сделать так, чтобы при нажатии кнопки в квадратик выводилась одна цифра (при первом нажатии цифра выведется в первый квадратик)

Рейтинг: 1Ответов: 1Опубликовано: 19.04.2023
import sys
from PyQt6.QtWidgets import *
from PyQt6.QtGui import *
from PyQt6.QtCore import *

class App(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title='PyQt'
        self.left=10
        self.top=10
        self.width=440
        self.height=280
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left,self.top,self.width,self.height)
        #Задаем цвет для фона
        self.setAutoFillBackground(True)
        p=self.palette()
        p.setColor(self.backgroundRole(),Qt.GlobalColor.white)
        self.setPalette(p)
        #Создаем перо для рисования
        self.m=PaintWidget(self)
        self.m.move(70, 0)
        self.m.resize(1000, 135)
        self.show()

class PaintWidget(QWidget):
    def paintEvent(self,event):
        qp=QPainter(self)
        qp.setPen(Qt.GlobalColor.blue)
        for i in range(0,20):
            qp.setBrush(QColor(260, 0, 0))
            qp.drawRect(30*i, 20, 30, 32)
            qp.setBrush(QColor(260, i*10, 0))
            qp.drawRect(30*i, 60, 30, 32)
            qp.setBrush(QColor(260, i*10, i*1))
            qp.drawRect(30*i, 100, 30, 32)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex=App()
    sys.exit(app.exec())

UPDATE:

У меня в этом коде выводятся прямоугольники в окне. И нужно, чтобы при нажатии какой либо кнопки, без разницы, выводилась цифра например 5 в первый прямоугольник. При втором нажатии, выведется тоже 5, но уже во второй прямоугольник. Надеюсь понятно стало)

Ответы

▲ 0

Мне не стало понятнее после вашего комментария.
Но я увидел вашу задачу так и теперь вы можете нажимать на кнопку 'Click me' сколько угодно раз и получите то, что вы хотите.

Вы также можете, если вам захочется, нажимать на прямоугольники и тогда на нем появится его порядковый номер.

import sys
'''                                Установите свои импорты
from PyQt6.QtWidgets import *
from PyQt6.QtGui import *
from PyQt6.QtCore import *
'''
from PyQt5.Qt import *


class PaintWidget(QWidget):                 
    def __init__(self, parent=None):
        super(PaintWidget, self).__init__(parent)
        
        self.setMinimumSize(QSize(602, 150))
        num = 20
        self.num_btn = 0
        self.dict_btn = {}
        
        for i in range(num):
            pbn = QPushButton(self)
            obj = f"pbn_{i}"
            pbn.setObjectName(obj)
            pbn.setGeometry(30*i, 20, 30, 31)
            c3 = i * 10
            pbn.setStyleSheet(f"""
                #{obj} {{
                    background-color: rgb(233, 0, {c3});
                }}""")
            pbn.clicked.connect(lambda ch, i=i, b=pbn: self.pbn_clicked(i, b))
            
            pbn_2 = QPushButton(self)
            obj = f"pbn_2_{i}"
            pbn_2.setObjectName(obj)
            pbn_2.setGeometry(30*i, 60, 30, 31)
            c2 = i * 10
            pbn_2.setStyleSheet(f"""
                #{obj} {{
                    background-color: rgb(233, {c2}, 0);

                }}""")
            pbn_2.clicked.connect(
                lambda ch, i=i+num, b=pbn_2: self.pbn_clicked(i, b))
          
            pbn_3 = QPushButton(self)
            obj = f"pbn_3_{i}"
            pbn_3.setObjectName(obj)
            pbn_3.setGeometry(30*i, 100, 30, 31)
            c2 = i * 10
            c3 = i * 7
            pbn_3.setStyleSheet(f"""
                #{obj} {{
                    background-color: rgb(233, {c2}, {c3});
                }}""")
            pbn_3.clicked.connect(
                lambda ch, i=i+num+num, b=pbn_3: self.pbn_clicked(i, b))
                
            self.dict_btn[i] = pbn
            self.dict_btn[i+num] = pbn_2
            self.dict_btn[i+num+num] = pbn_3

    def pbn_clicked(self, i, b):
        b.setText(f'{i}')  # <--- если это вам не надо, поставьте     
        # pass             # <--- `pass` вместо строки `b.setText(f'{i}')`

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title='PyQt'
        self.left, self.top, self.width, self.height = 30, 60, 730, 280
        
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)

        self.initUI()
        
        self.pushButton = QPushButton(' Click me ')
        self.pushButton.setObjectName('pushButton')
        self.pushButton.clicked.connect(self.pushButton_clicked)
        
        layout = QGridLayout(self.centralWidget)
        layout.addWidget(self.m, 1, 1, 1, 3)
        layout.addWidget(self.pushButton, 3, 2)  #, alignment = Qt.AlignCenter
        
        layout.setColumnStretch(0, 1)
        layout.setColumnStretch(4, 1)
        layout.setRowStretch(0, 1)
        layout.setRowStretch(2, 2)
        layout.setRowStretch(4, 1)
        
    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        
        # Задаем цвет для фона
        self.setAutoFillBackground(True)
        p = self.palette()
        p.setColor(self.backgroundRole(),Qt.GlobalColor.white)
        self.setPalette(p)
        
        self.m = PaintWidget()        

    def pushButton_clicked(self):
        self.m.dict_btn[self.m.num_btn].setText(f'{5}') 
        if self.m.num_btn < 59:  
            self.m.num_btn += 1 
        else:
            self.m.num_btn = 0
    

QSS = """
QPushButton {
    background-color: rgb(177, 177, 77);
    color: #fff;
    border: 1px solid #0000ff;
    font: 12pt;
}
#pushButton {
    border: 1px solid #1fb4e4;
    border-radius: 10px;
    min-height: 50px;
}
#pushButton:focus {
        color: black;
}
#pushButton:hover:pressed {
    background-color: #BAB9B8;
    border-color: #f00;
}
#pushButton:hover {
    background-color: #BA79D8;
    border-color: #f00;
    border: 2px solid #ffb4e4;
}
"""


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setStyleSheet(QSS)    
    w = MainWindow()
    w.show()
    sys.exit(app.exec())

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