QListWidget

QListWidget类是用于在列表中添加或删除条目的基于条目的接口,列表中的每个条目都是QListWidgetItem对象,并且QListWidget可以设置为多选。

 

ListWidget

该程序显示了QListWidget示例。它使用方法添加了几个项目addItem()

qlistwidget

如果单击窗口小部件项,它将显示一个弹出窗口。单击的事件将被发送,并显示一个QMessageBox。

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class ListWidget(QListWidget):
    def clicked(self, item):
        QMessageBox.information(self, "ListWidget", "ListWidget: " + item.text())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    listWidget = ListWidget()

    listWidget.resize(300, 120)
    listWidget.addItem("Item 1")
    listWidget.addItem("Item 2")
    listWidget.addItem("Item 3")
    listWidget.addItem("Item 4")
    listWidget.setWindowTitle('QListwidget Example')
    listWidget.itemClicked.connect(listWidget.clicked)

    listWidget.show()
    sys.exit(app.exec_())

列表小部件

此示例与以前的QListView实现类似,不同之处在于所使用的控件不同,一个是QListView,一个是QListWidget。

这将创建一个列表小部件:

listWidget = ListWidget()

您可以调整大小:

listWidget.resize(300, 120)

添加几项:

listWidget.addItem("Item 1")
listWidget.addItem("Item 2")
listWidget.addItem("Item 3")
listWidget.addItem("Item 4")

连接clicked()到itemClicked事件:

listWidget.itemClicked.connect(listWidget.clicked)

QListWidget具有以下方法:

  • 新增项目()
  • addItems()
  • insertItem()
  • 清除()
  • setCurrentItem()
  • sortItems()

QListWidget具有以下事件:

  • currentItemChanged
  • itemClicked

QDropEvent

您可以将QListWidget设置为接受拖放事件。下面的示例使您可以从右侧的QListWidget拖放到左侧的QListWidget。

在pyqt qlistwidget中拖放事件

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class DropInList(QListWidget):
    def __init__(self):
        super(DropInList,self).__init__()
        self.setAcceptDrops(True)

    def dropEvent(self, QDropEvent):
        source_Widget=QDropEvent.source()
        items=source_Widget.selectedItems()
        print(items)
        for i in items:
            source_Widget.takeItem(source_Widget.indexFromItem(i).row())
            self.addItem(i)
        print('drop event')

class MainWidget(QWidget):
    def __init__(self):
        super(MainWidget,self).__init__()
        self.setWindowTitle('Drag and Drop with QListView')
        self.main_layout=QHBoxLayout()
        self.left_widget=DropInList()
        self.right_widget=QListWidget()
        pre_list=['A','B','C']
        self.right_widget.addItems(pre_list)
        self.right_widget.setDragEnabled(True)
        self.right_widget.setDragDropOverwriteMode(False)
        self.right_widget.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.right_widget.setDefaultDropAction(Qt.MoveAction)
        self.main_layout.addWidget(self.left_widget)
        self.main_layout.addWidget(self.right_widget)
        self.setLayout(self.main_layout)

if __name__ == '__main__':
    app=QApplication(sys.argv)
    m=MainWidget()
    m.show()
    sys.exit(app.exec_())

标签

发表评论