Много флажок для каждого ярлыка - PullRequest
0 голосов
/ 03 апреля 2020

если щелкнул любой чакбокс, только 100-й ярлык изменился как «ОК». тем не менее, нужно, если щелкнул каждый флажок, каждая указанная цифра поменялась на «ок» (1: 1).

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class app(QWidget):
    def __init__(self):
        super().__init__()
        self.ui()

    def ui(self):
        self.setGeometry(100, 100, 1000, 500)
        self.setWindowTitle('aaa')

        for i in range(10):
            for j in range(10):
                self.lb = QLabel(str(i * 10 + j + 1), self)
                self.lb.move(50 * j + 10, 50 * i + 10) 
                self.cb = QCheckBox(None, self)
                self.cb.move(50 * j + 10, 50 * i + 25)
                self.cb.stateChanged.connect(self.change)

        self.show()

    def change(self):
        self.lb.setText('ok')

if __name__ == '__main__':
    a = QApplication(sys.argv)
    ex = app()
    sys.exit(a.exec_())     

1 Ответ

0 голосов
/ 03 апреля 2020

Вам необходимо связать пары QCheckBox / QLabel и использовать sender() в функции change().

class app(QWidget):
    def __init__(self):
        super().__init__()
        self.ui()

    def ui(self):
        self.setGeometry(100, 100, 1000, 500)
        self.setWindowTitle('aaa')

        for i in range(10):
            for j in range(10):
                lb = QLabel(str(i * 10 + j + 1), self)
                lb.move(50 * j + 10, 50 * i + 10) 
                cb = QCheckBox(None, self)
                cb.move(50 * j + 10, 50 * i + 25)
                cb.stateChanged.connect(self.change)
                cb.label = lb

        self.show()

    def change(self):
        self.sender().label.setText('ok')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...