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个回答

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


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_())

l565125579
l565125579 谢谢大佬,受教了,果然CSDN都是大神
10 个月之前 回复

我找到了另外一个实现方法,但是还是楼上大佬的更给力,只加了4行代码,佩服
还是把我的代码贴上来,给大家参考

 import sys
from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QAbstractItemView,QListWidget
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.qList=['Item 1','Item 2','Item 3','Item 4','Item 5','Item 6','Item 7','Item 8','Item 9','Item 6','Item 7','Item 8','Item 9','Item 6','Item 7','Item 8','Item 9']

        self.listWidget = QListWidget(self)
        self.listWidget.addItems(self.qList) #批量加

        self.listWidget.setSelectionMode(QAbstractItemView.ExtendedSelection)  # 按住CTRL可多选
        #self.listWidget.setSelectionMode(QAbstractItemView.SingleSelection)  #单选

        text_list = self.listWidget.selectedItems()
        text = [i.text() for i in list(text_list)]
        print(text)

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

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

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

    def clicked(self):
        text_list = self.listWidget.selectedItems()
        text = [i.text() for i in list(text_list)]
        text = '、'.join(text)  # text即多选项并以、隔开
        self.label_dqxz.setText('当前选择:' + text)

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
PyQt5高级界面控件之QLIstView(二)
QListView 前言 QlistView类用于展示数据,它的子类是QListWIdget。QListView是基于模型(Model)的,需要程序来建立模型,然后再保存数据 QListWidget是一个升级版本的QListView,它已经建立了一个数据储存模型(QListWidgetItem),直接调用addItem()函数,就可以添加条目(Item) QListView类中...
关于select多选返回值的问题
昨天在码的时候碰上了这个问题,当使用select多选时,传到后台的值只有一个,是第一次被选中的第一个,无法上传多个值。 瞬间蛋疼了,感觉既然select有multiple这个属性,但是又不能返回多个选择值,感觉非常鸡肋,真的不知道这个是为了啥,然并卵,还是要解决的,去万能的互联网上查了一下,有不少猿跟我一样碰到了这个问题,基本的解决方案也还不错,现在提供下纯js解决这个问题的方案。 func
QListView的问题
为什么我用firstChild得到QListViewItem指针后,通过调用text得到的记录子项(比如第3项)却是空,前面我已经插入记录过了。
QListView、 QListWidget
怎么使用QListView类将文件夹中的图片以缩略图的形式显示,这个问题查了很多资料,都没有详细的解决方案,希望大家能给一个建议
QListView和QListWidget
QListView是基于Model,而QListWidget是基于Item。这是它们的本质区别。 往QListView中添加条目需借助QAbstractListModel:
求助QlistView
我需要一个经常更新的ListView,一开始我使用QML做的,但由于是动态的,而且数据比较多,造成很严重的内存泄露。rn我想回到C++来写,但我看QListView 对于绑定Molde 只有一个简单的SetModel()函数rnrn我想问的是我需要移除Model 该如何实现?rnrn我看到网上 使用SetModel(NULL),这样方法可以清除界面上的显示内容,但我怎么看怎么感觉又内存泄露了。rnrn哪位有这方面的经验的,指导下。
qlistview的用法
qlistview的用法 1,qlistview中随意添加节点 2,qlistview中奇偶数的节点背景色不同,这样好区分东西. 3,qlistview中单击该节点的时候该节点变为一种新的背景色. 4,qlistview中单击其他节点时,原来单击的节点回复原来的背景色,注意是原来的. 5,qlistview中单击节点时获得该节点的数据.
QListView Hover
QListView Hover 了解Hover的事件触发
QListView控件使用
1)说明: 这个控件常与QListWidget进行比较,都经常用于数据的展示(row、column)。 2)只用到了行的操作,用于展示路径或其他条目: 大致过程是: 构建QStringList 对象; 构建QStringListModel对象,将QStringList对象作为参数; 使用setModel(QStringLi...
QListView,图片放大
QListView实现的列表和显示1.png图片,点击列表的1,2,3,分别放大1.jpg图片1倍,2倍,3倍.rn槽函数怎么写啊?
QListView在多选模式下如何快速获取选中项
Qt3.3下,由于现在QListView比较庞大、阶层关系较为复杂,整张QListView遍历来获取选中项的话开销比较大。除此之外,有其他办法吗?
QListview 基本问题
我想问的是我如何控制rnListView 内的Item大小,并使得文字显示居中?
QListView 列表控件
本课程以C++编程为导向来详细介绍Qt编程,课程包括十四个部分,分别介绍Qt的编程环境、窗体应用、控件应用、组件应用、文件操作、图形图像操作、多媒体应用、对系统操作、对注册表操作、数据库应用,网络应用开发、进程与线程应用、数据的加密与解密以及Qt程序打包部署;课程全部以现场编程教学,手把手的教会大家C++ Qt的编程,欢迎大家来学习。
QListView多列
如何实现呢,找来找去只有一列的实现方法
PyQt5 PyQt5
PyQt5
PyQt5调用JavaScript代码,并返回值
<p>rn 扫码进入学习群,领取学习资料+讲师答疑rn</p>rn<p>rn <br />rn</p>rn<p>rn <img src="https://img-bss.csdn.net/201908080321173069.png" alt="" /> rn</p>rn<p>rn <br />rn</p>rn<p>rn 本课程属于《Python大讲堂》系列课程,全面深入讲解了PyQt5的核心API以及扩展应用。PyQt5视频培训课程的主要内容:rn1. Qt Designerrn2. PyQt5基本窗口控件rn3. PyQt5高级组件rn4. PyQt5布局管理rn5. PyQt5信号与槽rn6. PyQt5图形与特效rn7. PyQt5扩展应用rn</p>
pyQt5 pyQt5
PyQt5-5.0-gpl-Py3.3-Qt5.0.2-x32.exe
请问listbox怎么取多选后的返回值?
谢谢
用于从后台返回值的多选的选中
HTML中:<label><input type="checkbox" name="me" id="me" value="1" />1</label> <label><input type="checkbox" name="me" id="me" value="2" />2</label> <label><input type="checkbox" name="me"
QListView 实现model
Qt 视图模型
QListView 触屏滑动不起作用?
用QT做的一个程序,用的QListView在触屏电脑上运行,结果滑动不了,只能鼠标操作滑动或是触屏滚动条滑动,,,,QT难道不支持触屏吗??
QListView排序的问题。
同一份数据,需要以不同的形式进行显示,所以各个显示的地方的排序规则也就不一样。所以,我想以同一个Model为源数据,然后再用ProxyModel进行排序和过滤等操作,但是发现ProxyModel的排序函数断点不进入,是QListView不能进行排序么?
Qt中的QListView控件
想让它显示的行数是无限的,只要有数据就刷新到界面,如何实现哦?始终值显示一条信息,后面一条会覆盖前面的,怎么修改rnvoid MainWindow::readOutput(int num)// 这里的num是线程传来的参数,显示1~100的数,1秒刷新rnrn QStringList list;rn list += QString::number(num);rn QStringListModel *model = new QStringListModel(list);rn ui->listView->setModel(model);rn ui->listView->setUpdatesEnabled(true);rn model->setStringList(list);rnrnrn
求助 QlistView 按住拖动
在qml里用ListView 做出来的列表是可以按住鼠标然后上下拖动的,就和Android的listview一样,rn但是在代码里写的QListView只能用滚轮,rn在Android应用里这样很不方便,有什么办法改成和qml的listview一样?rn
QListView如何显示多列
在Linux里要做个类似资源管理器的东西.需要多种视图:详细,图标,列表rn详细视图用的QTableView做好了rn图标用QListView的 IconMode风格也可以了rn列表用QListView的 ListMode风格,但它只能显示一列啊.怎么设置成多列显示.rn由于显示的数据量可能会很大,所以没用Widget.
Qt4.7,4.8 QListView 的用法
求linux Qt4.7,4.8 QListView 的详细用法,越详细越好,谢谢!另外谁推荐一本qt4.7或4.8的 关于所用控件使用的教程,电子版的也行,要是有的话发我邮箱847755344@qq.com ,真心感谢,急啊~
用QlistView控制QWidgetStack
环境:Redhat9.0,qt3.1.1。rn在MainWindow窗口中,左边放置一个QListView,右边放置一个QWidgetStack,二者通过QSplitter放在一起。rn程序目的:通过点击QListView的子节点,来切换QWidgetStack。rnrn我的做法:rn我用的是void clicked ( QListViewItem * item )信号,获取当前点击的子节点所显示的字符串。然后,写了个槽函数,进行switch判断:获取哪个字符串,就切换到与之对应的QWidgetStack界面。可是,一旦点击QListView的子节点,程序就直接退出了。我把实现这个切换的代码去掉,程序就好了。rnrn请教,该怎么做,可以实现“点击QListView的子节点,切换QWidgetStack的界面”rn
QT QListVIew mvd例程
QT QListVIew mvd例程,MVD机制理解,方便二次开发使用,看看.
QListView 添加右键菜单
qt右键菜单,弹出自定义菜单 #include "widget.h" #include "ui_widget.h" #include <QCursor> #include <QDebug> #include <QListView> #include <QStringList> #include <QStringListModel> #include <QPoint> #include <QMenu>
qlistview 显示富文本
//qlistview 显示富文本 class HtmlDelegate : public QStyledItemDelegate { protected: void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const; QSize siz
qlistview 如何显示 header
如题,没找到。rnrnqlistview是不是就没有 header 可以显示?
qlistview的一个问题
qlistview怎么在一行一行之间添加一条横线,就像tabview一样,只不过没有竖着的线。还有就是怎么让文字竖直居中,改了半天只能水平居中。
qlistview 选中点击事件
qlistview有click和doubleclick2个信号,rnrn我现在需要实现鼠标点击item时的鼠标事件,我用iconmode 模式,从数据库中读取相应缩略图路劲并显示,rn但是点击事件怎么处理rn我用 connect(list,SIGNAL(clicked(QModelIndex)),this,SLOT(itemClicked(QModelIndex)));rnrn然后 itemClicked 中rn itemClicked(QModelIndex index)rnqDebug() << index.data().string();rnrn得到是空值!rnrn我现在想处理的是 因为是从数据库中读取出来的,所以点击相应的 item 时 要在数据库中查找这个item 对的信息,所以现在 怎么在这个曹函数中处理这个,或者个说怎么获取点击这个item的一些属性方便从数据库中读取相应的信息!
QListView显示图片缩略图速度慢
继承QAbstractItemDelegate重载了 rnvoid paint(QPainter *painter, const QStyleOptionViewItem &option,const QModelIndex &index) const;rnQSize sizeHint(const QStyleOptionViewItem &option,const QModelIndex &index ) const;rn显示640X512大小的图片速度还好,但是显示分辨率大的图片就很卡,而且图片很多的时候也很卡,在pc上明显可以感受到卡,还可以忍受,但是到了arm板子上,就受不了了。rn[code=C/C++]rnvoid BaseFileDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,rn const QModelIndex &index) constrnrn const QFileSystemModel *model = qobject_cast(index.model());rn QPixmap pixmap(model->filePath(index));rn painter->drawPixmap(option.rect, pixmap);rn painter->setPen(QPen(Qt::red));rnrnrnQSize BaseFileDelegate::sizeHint(const QStyleOptionViewItem &option,rn const QModelIndex &index) constrnrn Q_UNUSED(option);rnrn const QFileSystemModel *model = qobject_cast(index.model());rn QImage image(model->filePath(index));rn return image.size() / 2;rnrn[/code]rnrn有个比较奇怪的问题就是,在paint执行的过程中,qDebug的结果显示,其运行了三次,这是啥原因?rn究竟有什么好的办法,能显示缩略图的时候不卡哇?
QListView用方向键选择项
QListView(IconMode) + QStandardItemModel怎么获取方向键来选择当前的项?似乎没有类似clicked这样的信号?
QListView 样式设置 css
QListView的样式设置:选中颜色,选项宽度等,网上搜了一些,但是不好用。n询问各路大神,注释哦
QListView如何自定义item
现在要用QListView来写一个播放列表, 播放列表里面要信息要有缩略图, 时长, 大小, 帧数等信息rn用QListView如何自定义这些信息呢?rn是否需要自己定义一个QWidget, 然后怎么绘制这个QWidget?
ubuntu 安装pyqt5 和卸载pyQt5
安装pyqt5 wind@wind-ThinkPad-X250:~/Downloads/PyQt5_gpl-5.12.2$ python3 -m pip install PyQt5 Collecting PyQt5 Downloading https://files.pythonhosted.org/packages/6a/f4/6a63aafcee3efd2b156dc835d9c85c...
PyQt5 tutorial PyQt5教程英文版
PyQt5 Tutorial Documentation Release 1.0 Andrew Steele March 01, 2016 1 Introduction 3 2 Hello World 5 3 Window 7 4 BoxLayout 9 5 GridLayout 11 6 Label 13 7 PushButton 15 8 RadioButton 17 9 CheckBox 19 10 ToolTip 23 11 WhatsThis 25 12 LineEdit 27 13 ButtonGroup 29 13.1 Constructor................................................ 29 13.2 Methods ................................................. 29 13.3 Signals.................................................. 30 13.4 Example ................................................. 30 14 GroupBox 33 15 SizeGrip 35 16 Splitter 37 17 Frame 39 18 Slider 41 19 ScrollBar 43 20 ScrollArea 45 ..... ..... ..... .....
PyQt5学习笔记(一)——PyQt5安装
1、PyQt5简介    PyQt5是一套Python绑定DigiaQT5应用的框架,可用于Python2和Python3。PyQt5做为Python的一个模块,它有620多个类和6000个函数和方法。它是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX,Windows,Mac OS。PyQt5是双重许可,开发者可以在GPL和商业许可之间进行选择。      PyQt5的官方网站h...
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数