Python:QTableWidget列中的CheckBox-es

时间:2012-05-03 00:29:42

标签: pyqt4 python-2.6 qt-designer qtablewidgetitem

我刚开始使用python,所以我遇到了问题。我到处搜索,但我找不到类似的例子。 所以,问题在于:我使用QT-Designer制作了一个简单的GUI。点击按钮分析即可填写QTableWidget。 (如图所示) link for picture

当我选择一个复选框时,其余的都是随机选择的,我不知道为什么。 正如我所说,我是Python的新手,所以这个好的解释对我来说意味着很多。这是源代码:

import sys
from PyQt4 import QtGui,QtCore
from IDCS import *

class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.connect(self.ui.analyseButton, QtCore.SIGNAL('clicked()'), self.doAnalyse)
        self.connect(self.ui.quitButton, QtCore.SIGNAL('clicked()'), QtGui.qApp, QtCore.SLOT('quit()'))

    def doAnalyse(self):
        self.ui.tableWidget.setRowCount(10)

        chkBoxItem = QtGui.QTableWidgetItem()
        chkBoxItem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
        chkBoxItem.setCheckState(QtCore.Qt.Unchecked)       

        for i in range(10):
            self.ui.tableWidget.setItem(i, 0, chkBoxItem)
            self.ui.tableWidget.setItem(i, 1, QtGui.QTableWidgetItem("description %s" % (i+1)))
            self.ui.tableWidget.setItem(i, 2, QtGui.QTableWidgetItem("name %s" % (i+1)))
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MyForm()
    myapp.show()
    sys.exit(app.exec_())e

1 个答案:

答案 0 :(得分:3)

您只创建了一个CheckBox实例并将其放在10个不同的位置,这是错误的。你必须制作10个CheckBox实例,你将通过在下面的for循环下移动那些你正在创建CheckBox实例的3行代码来实现这一点。