python - 是否可以限制 QListWidget 使用户最多只能选择 3 个项目?
问题描述
我知道您可以更改选择模式以从列表中选择多个项目。但是,更改为多选意味着用户可以根据需要选择选择列表中的所有项目。我想知道是否可以允许用户选择多个项目但设置最大项目数(即用户可以从 20 个项目的列表中选择 1-3 个项目)。
我查看了文档和各种问题,但看不到任何可以做到这一点的方法。
import sys
from PyQt5.QtWidgets import QAbstractItemView, QApplication, QListWidget, QListWidgetItem, QVBoxLayout, QWidget
class Example(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(50,50,320,200)
layout = QVBoxLayout(self)
combo = QListWidget(self)
combo.setSelectionMode(QAbstractItemView.MultiSelection)
counter = 1
while (counter < 21):
combo.addItem(str(counter))
counter = counter + 1
layout.addWidget(combo)
self.setWindowTitle("QListWidget")
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
我的示例代码显示了一个包含 20 个项目的列表。它具有多选集,因此用户可以选择多个但没有当前限制。
解决方案
好的,摘自此处找到的文档: https ://doc.qt.io/qtforpython/PySide2/QtWidgets/QAbstractItemView.html
声明如下:
请注意,在显示小部件之前,范围不会更新。
其他几个功能与选择控制有关;例如 setSelectionMode() 和 setSelectionBehavior() 。这个类提供了一个默认的选择模型( selectionModel() ),但这可以通过使用 setSelectionModel() 和 QItemSelectionModel 的实例来替换
所以是的,有可能做到这一点(因为它与所有编码工作一样——一切皆有可能),上面说明了你只需要弄清楚你将如何实现它——可能需要使用 Behavior或者制作自己的模型
推荐阅读
- python - 邮件的 ReceivedTime 未在 python 中显示
- ios - 如何在适用于 iOS 的 React 应用程序上隐藏滚动条
- gnuplot - 系统时间和 Gnuplot
- cordova - 如何在 ionic 3 中修复错误运行“ionic cordova build ios --prod”?
- openvswitch - “ovs-dpctl show”命令是什么意思?
- objective-c - MPSMatrixMultiplication encodeToBuffer 有问题
- algorithm - The implementation of Adaboost on neural network
- jquery - 基于另一个 datepickers 值的 JQuery datepicker
- java - 多个 FXML 文件,每个文件都有控制器 - 附加后 TextArea 无法正确显示文本
- django - 反向 url 在中间件中的 Django 1.6 中不起作用