PyQt5 QListWidget的使用总结,以及itemClicked和itemDoubleClicked信号

本文主要总结了QListWidget 列表控件的使用,以及itemClicked和itemDoubleClicked信号的疑惑。

 

过程

在Qt设计器里绘制窗口如下:

PyQt5 QListWidget的使用总结,以及itemClicked和itemDoubleClicked信号_第1张图片

先转换为.py文件,然后创建一个新.py文件,来进一步初始化UI。

1. 然后设置列表控件的属性:

①可以在绘制窗口时设置QListWidget的选择模式:

PyQt5 QListWidget的使用总结,以及itemClicked和itemDoubleClicked信号_第2张图片

或 通过setSelectionMode 设置 

self.listWidget.setSelectionMode(QAbstractItemView.SingleSelection)

一般常用的为

NoSeletion不可选择,

SingleSeletion单选,一次只能选择一行(QListWidget的SelectionBehavior应该就是Rows吧) 

ExtendedSeletion可通过按Ctrl或Shift多选

 

②设置可修改模式

PyQt5 QListWidget的使用总结,以及itemClicked和itemDoubleClicked信号_第3张图片

self.listWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)

NoEditTriggers:不可修改

CurrentChanged:任何时候都能修改

剩下的为 双击修改/单击修改/按编辑键修改/按任意键修改/包括以上所有可修改的条件

 

2. 添加信号与槽的响应

单击列表显示选择的内容在label里;双击列表显示选择的内容在label里,并关闭窗口;单击按钮关闭窗口

    def __set_signal_respond(self):
        self.listWidget.itemClicked.connect(self.show_select_item)
        self.listWidget.itemDoubleClicked.connect(self.show_select_item1)
        self.listWidget.itemDoubleClicked.connect(self.close_win)
        self.pushButton.clicked.connect(self.close_win)

    def show_select_item(self):
        print('item click')
        item = self.listWidget.selectedItems()[0]
        text_0 = self.label.text()
        self.label.setText(text_0 + item.text())

    def show_select_item1(self):  # 为了看清楚doubleclick会触发2次click信号添加
        print('item double click')
        item = self.listWidget.selectedItems()[0]
        text_0 = self.label.text()
        self.label.setText(text_0 + item.text())

    def close_win(self):
        self.close()

执行时双击列表中的选项,发现执行itemdoubleclicked事件会先触发itemclicked事件

PyQt5 QListWidget的使用总结,以及itemClicked和itemDoubleClicked信号_第4张图片

网上搜索确实如此。所以把itemdoubleclicked连接show_select_item1方法这句删掉即可。

PyQt5 QListWidget的使用总结,以及itemClicked和itemDoubleClicked信号_第5张图片

 

 

你可能感兴趣的:(PyQt5)