每个标签都有很多复选框

时间:2020-04-03 00:28:47

标签: python pyqt pyqt5

如果单击任何chackbox,则只有第100个标签更改为“确定”。 但是,如果需要单击每个chackbox,则上述每个数字标签都将变为“ ok”(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 :(得分:0)

您需要链接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')
相关问题