【问题标题】:How to create a list of checkboxes如何创建复选框列表
【发布时间】:2015-05-22 20:03:32
【问题描述】:

我正在尝试读取一个 xml 文件并使用其中的一些内容填充 QListWidget。每个条目都应该有一个复选框。

在 Qt Designer 中,我创建了列表并添加了一个带有复选框的项目,方法是将该项目添加到 listWidget,然后右键单击它并选择 Edit Items > Properties > Set Flags to UserCheckable。所以我可以手动完成。

但是当我在 xml 文件中读取以填充 ListWidget 时,我无法使这些项目成为可检查的。

import xml.etree.ElementTree as et

xml_file = os.path.join(path, testcase_file)
tree = et.parse(xml_file)
root = tree.getroot()

for testcases in root.iter('testcase'):
    testcase_name = str(testcases.attrib)
    item = self.listWidgetTestCases
    item.addItem(QtGui.QApplication.translate("qadashboard", testcase_name, None))
    # item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
    # item.setCheckState(QtCore.Qt.Unchecked)

这会在列表小部件中创建一个测试用例名称列表。但是我不能将这些项目变成复选框。 item.setFlagsItemIsUserCheckable 无法识别列表小部件,因此在上面的示例中将这两行注释掉。

【问题讨论】:

    标签: python qt checkbox pyqt qlistwidget


    【解决方案1】:

    你快到了:只是你试图使list-widget 成为可检查的,而不是每个list-widget-item

    试试这个:

    from PyQt5 import QtWidgets, QtCore
    
    self.listWidgetTestCases = QtWidgets.QListWidget()
    
    for testcases in root.iter('testcase'):
        testcase_name = str(testcases.attrib)
    
        item = QtWidgets.QListWidgetItem(testcase_name)
        item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
        item.setCheckState(QtCore.Qt.Unchecked)
        self.listWidgetTestCases.addItem(item)
    

    (注意:对于 PyQt4,使用 QtGui 而不是 QtWidgets)

    【讨论】:

      猜你喜欢
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 2014-01-26
      • 2015-02-23
      • 2014-12-31
      • 1970-01-01
      • 2012-03-30
      相关资源
      最近更新 更多