在PyQt4上的QListWidget中选择setItemSelected

2024-09-30 12:21:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这段简单的代码,我正在努力使一些项目(甚至在这个例子中)在QListWidget中预先选择。我哪里出错了?在

from PyQt4 import QtGui, QtCore, Qt

import sys

class Main(QtGui.QWidget):
    def __init__(self, parent=None):    
        QtGui.QWidget.__init__(self,parent)

        grid = QtGui.QGridLayout()

        self.builtinpatternslist = QtGui.QListWidget()
        self.builtinpatternslist.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
        for i in range(5):
            self.builtinpatternslist.addItem(QtGui.QListWidgetItem(str(i)))
            if i % 2 == 0:
                self.builtinpatternslist.setItemSelected(QtGui.QListWidgetItem(str(i)),True)


        grid.addWidget(self.builtinpatternslist,0,0)

        self.setLayout(grid)


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    gui = Main()
    gui.show()
    gui.raise_()
    sys.exit(app.exec_())

Tags: importselfifinitmainsysguigrid
1条回答
网友
1楼 · 发布于 2024-09-30 12:21:40

每个QtGui.QListWidgetItem(...)调用都会创建一个新项。您在代码中所做的是首先创建一个项,并将其添加到列表中。。。然后,如果它在一个奇怪的位置,创建一个全新的项目并选择它,而不需要将它添加到列表中。在

您需要确保每次只处理一个项目:将单个QtGui.QListWidgetItem(...)调用的结果保存在变量中,然后对其进行操作:

    for i in range(5):
        item = QtGui.QListWidgetItem(str(i))
        self.builtinpatternslist.addItem(item)
        if i % 2 == 0:
            self.builtinpatternslist.setItemSelected(item, True)

相关问题 更多 >

    热门问题