Python 使用setflags()向QListWidgetItem添加几个复选框
我正在使用Python3.3和PyQt4。我想向qtlistwidget中的项目添加几个复选框。我可以使用以下代码添加一个:Python 使用setflags()向QListWidgetItem添加几个复选框,python,qt,checkbox,pyqt,pyqt4,Python,Qt,Checkbox,Pyqt,Pyqt4,我正在使用Python3.3和PyQt4。我想向qtlistwidget中的项目添加几个复选框。我可以使用以下代码添加一个: item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) item.setCheckState(QtCore.Qt.Unchecked) 但我无法为这个项目添加更多内容,我尝试了以下方法: item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable |
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
item.setCheckState(QtCore.Qt.Unchecked)
但我无法为这个项目添加更多内容,我尝试了以下方法:
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsUserCheckable)
或
但两者都不起作用。是否有人知道是否可以添加更多复选框,或者我如何解决这个问题。非常感谢
QListWidgetItem
不是以这种方式使用的。无论您设置了多少次QtCore.Qt.ItemIsUserCheckable
标志,每个项目都将显示一个复选框。如果需要在同一行中显示多个复选框,QTableWidget
可能就是您想要的:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#---------
# IMPORT
#---------
from PyQt4 import QtGui, QtCore
#---------
# MAIN
#---------
class MyWindow(QtGui.QWidget):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
numberRows = 1
numberColumns = 2
self.tableWidget = QtGui.QTableWidget(self)
self.tableWidget.setRowCount(numberRows)
self.tableWidget.setColumnCount(numberColumns)
for rowNumber in range(numberRows):
for columnNumber in range(numberColumns):
item = QtGui.QTableWidgetItem("item {0} {1}".format(rowNumber, columnNumber))
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
item.setCheckState(QtCore.Qt.Unchecked)
self.tableWidget.setItem(rowNumber, columnNumber, item)
self.layoutVertical = QtGui.QVBoxLayout(self)
self.layoutVertical.addWidget(self.tableWidget)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
app.setApplicationName('MyWindow')
main = MyWindow()
main.resize(333, 111)
main.show()
sys.exit(app.exec_())
QListWidgetItem
不是以这种方式使用的。无论您设置了多少次QtCore.Qt.ItemIsUserCheckable
标志,每个项目都将显示一个复选框。如果需要在同一行中显示多个复选框,QTableWidget
可能就是您想要的:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#---------
# IMPORT
#---------
from PyQt4 import QtGui, QtCore
#---------
# MAIN
#---------
class MyWindow(QtGui.QWidget):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
numberRows = 1
numberColumns = 2
self.tableWidget = QtGui.QTableWidget(self)
self.tableWidget.setRowCount(numberRows)
self.tableWidget.setColumnCount(numberColumns)
for rowNumber in range(numberRows):
for columnNumber in range(numberColumns):
item = QtGui.QTableWidgetItem("item {0} {1}".format(rowNumber, columnNumber))
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
item.setCheckState(QtCore.Qt.Unchecked)
self.tableWidget.setItem(rowNumber, columnNumber, item)
self.layoutVertical = QtGui.QVBoxLayout(self)
self.layoutVertical.addWidget(self.tableWidget)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
app.setApplicationName('MyWindow')
main = MyWindow()
main.resize(333, 111)
main.show()
sys.exit(app.exec_())