l565125579 2018-12-03 10:53 采纳率: 100%
浏览 2873
已采纳

PyQt5的QListView多选返回值

代码如下,怎么样实现多选返回列表,显示在QLabel

图片说明

 import sys
from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QListView,QAbstractItemView
from PyQt5.QtCore import QStringListModel
from PyQt5 import QtWidgets

class ListViewDemo(QWidget):
    def __init__(self,parent=None):
        super(ListViewDemo, self).__init__(parent)
        #设置初始大小与标题
        self.resize(300,270)
        self.setWindowTitle('QListView 多选问题')

        #垂直布局
        self.layout=QVBoxLayout()

        #实例化列表视图
        self.listview=QListView()

        #实例化列表模型,添加数据
        self.slm=QStringListModel()
        self.qList=['Item 1','Item 2','Item 3','Item 4','Item 5','Item 6','Item 7','Item 8','Item 9']

        #设置模型列表视图,加载数据列表
        self.slm.setStringList(self.qList)

        #设置列表视图的模型
        self.listview.setModel(self.slm)

        # 多选
        self.listview.setSelectionMode(QAbstractItemView.ExtendedSelection)
        # 不能对表格进行修改(双击重命名等)
        self.listview.setEditTriggers(QAbstractItemView.NoEditTriggers)

        self.label_dqxz = QtWidgets.QLabel()
        self.label_dqxz.setText("当前选择:-")

        #单击触发自定义的槽函数
        self.listview.clicked.connect(self.clicked)


        #设置窗口布局,加载控件
        self.layout.addWidget(self.listview)
        self.layout.addWidget(self.label_dqxz)
        self.setLayout(self.layout)

    def clicked(self,index):

        self.label_dqxz.setText('当前选择:'+self.qList[index.row()])


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

  • 写回答

2条回答 默认 最新

  • lyhsdy 2018-12-04 02:46
    关注

    如果答案对你有帮忙,请采纳

    
    import sys
    from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QListView,QAbstractItemView
    from PyQt5.QtCore import QStringListModel
    from PyQt5 import QtWidgets
    
    class ListViewDemo(QWidget):
        def __init__(self,parent=None):
            super(ListViewDemo, self).__init__(parent)
            #设置初始大小与标题
            self.resize(300,270)
            self.setWindowTitle('QListView 多选问题')
    
            #垂直布局
            self.layout=QVBoxLayout()
    
            #实例化列表视图
            self.listview=QListView()
    
            #实例化列表模型,添加数据
            self.slm=QStringListModel()
            self.qList=['Item 1','Item 2','Item 3','Item 4','Item 5','Item 6','Item 7','Item 8','Item 9']
    
            #设置模型列表视图,加载数据列表
            self.slm.setStringList(self.qList)
    
            #设置列表视图的模型
            self.listview.setModel(self.slm)
    
            # 多选
            self.listview.setSelectionMode(QAbstractItemView.ExtendedSelection)
            # 不能对表格进行修改(双击重命名等)
            self.listview.setEditTriggers(QAbstractItemView.NoEditTriggers)
    
            self.label_dqxz = QtWidgets.QLabel()
            self.label_dqxz.setText("当前选择:-")
    
            #单击触发自定义的槽函数
            self.listview.clicked.connect(self.clicked)
    
    
    
            #设置窗口布局,加载控件
            self.layout.addWidget(self.listview)
            self.layout.addWidget(self.label_dqxz)
            self.setLayout(self.layout)
    
        def clicked(self):
            textlist=''
            for i in self.listview.selectedIndexes():
                text=i.data()
                textlist=textlist+' '+text
            self.label_dqxz.setText('当前选择:'+textlist)
    
    
    if __name__ == '__main__':
        app=QApplication(sys.argv)
        win=ListViewDemo()
        win.show()
        sys.exit(app.exec_())
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)