Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对QListWidgetItem使用验证程序_Python_Qt_Pyqt - Fatal编程技术网

Python 对QListWidgetItem使用验证程序

Python 对QListWidgetItem使用验证程序,python,qt,pyqt,Python,Qt,Pyqt,我使用的是一个QListWidget,它的项目可以通过双击来编辑(使用item.setFlags(item.flags()| Qt.ItemIsEditable))。我想检查用户输入的名称是否正确(我会使用isidentifier()检查它是否对应于正确的变量名,以及它是否不是带有iskeyword()的Python关键字)。我不想使用QListView,因为它需要对我的代码进行大量更改 以下是一个例子: from PyQt5.QtWidgets import QListWidget, QLis

我使用的是一个
QListWidget
,它的项目可以通过双击来编辑(使用
item.setFlags(item.flags()| Qt.ItemIsEditable)
)。我想检查用户输入的名称是否正确(我会使用
isidentifier()
检查它是否对应于正确的变量名,以及它是否不是带有
iskeyword()
的Python关键字)。我不想使用
QListView
,因为它需要对我的代码进行大量更改

以下是一个例子:

from PyQt5.QtWidgets import QListWidget, QListWidgetItem
from PyQt5.QtCore import Qt


class MyListWidget(QListWidget):
    def __init__(self):
        super().__init__()

        item1 = QListWidgetItem('item 1')
        item2 = QListWidgetItem('item 2')

        item1.setFlags(item1.flags() | Qt.ItemIsEditable)
        item2.setFlags(item2.flags() | Qt.ItemIsEditable)

        self.addItem(item1)
        self.addItem(item2)

        self.show()


if __name__ == '__main__':
    from PyQt5.QtWidgets import QApplication
    import sys


    app = QApplication(sys.argv)
    win = MyListWidget()
    sys.exit(app.exec_())
这些项可以更改为任何值,即使是包含特殊字符的字符串或空字符串。

请考虑。您可以尝试。我认为您不需要切换到
QListView
。只需调用
setItemDelegate
。另见