Python 是否可以限制QListWidget,以便用户最多只能选择3项?
我知道您可以更改选择模式,从列表中选择多个项目。但是,更改为multiselection意味着用户可以选择选择列表中的所有项目。我想知道是否可以允许用户选择多个项目,但设置项目的最大数量,即用户可以从20个项目的列表中选择1-3个项目 我已经浏览了文档和各种问题,但看不到任何可以做到这一点的方法 导入系统 从PyQt5.QtWidgets导入QAbstractItemView、QApplication、QListWidget、QListWidgetItem、QVBoxLayout、QWidget 类示例SampleQWidget: 定义初始自我: 超级__ 自设几何50,50320200 布局=QVBoxLayoutself combo=QListWidgetself combo.setSelectionModeQAbstractItemView.MultiSelection 计数器=1 当计数器<21时: combo.addItemstrcounter 计数器=计数器+1 layout.addWidgetcombo self.setWindowTitleQListWidget 自我表现 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': app=QApplicationsys.argv ex=示例 脱口秀 sys.exitapp.exec_Python 是否可以限制QListWidget,以便用户最多只能选择3项?,python,pyqt,pyqt5,qlistwidget,Python,Pyqt,Pyqt5,Qlistwidget,我知道您可以更改选择模式,从列表中选择多个项目。但是,更改为multiselection意味着用户可以选择选择列表中的所有项目。我想知道是否可以允许用户选择多个项目,但设置项目的最大数量,即用户可以从20个项目的列表中选择1-3个项目 我已经浏览了文档和各种问题,但看不到任何可以做到这一点的方法 导入系统 从PyQt5.QtWidgets导入QAbstractItemView、QApplication、QListWidget、QListWidgetItem、QVBoxLayout、QWidget
我的示例代码显示20个项目的列表。它设置了multiselection,因此用户可以选择多个但没有当前限制。好的,这里的文档摘录如下: 声明如下: 请注意,在显示小部件之前,范围不会更新 其他几个功能与选择控制有关;对于 示例setSelectionMode和setSelectionBehavior。这个班 提供用于selectionModel的默认选择模型, 但这可以通过在实例中使用setSelectionModel来替代 QItemSelectionModel的实现 因此,是的,所有的编码工作都有可能做到这一点-任何事情都有可能,上面说明了您只需要弄清楚如何实现它-可能需要使用行为或创建自己的模型一种方法是将QListWidget子类化并覆盖selectionCommand,例如
这可能适用于类似的情况 list是example.ui中定义的QListWidget。将lenselected_items>3中的3更改为所需的任何值
ui_filename = "example.ui"
baseUIClass, baseUIWidget = uic.loadUiType(ui_filename)
class Example(baseUIWidget, baseUIClass):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
self.setupUi(self)
self.list.itemSelectionChanged.connect(self.Enforce_Selection_Size)
def Enforce_Selection_Size(self):
selected_items = self.list.selectedItems()
if len(selected_items) > 3:
selected_items[3].setSelected(False)
哦,这很有道理!您知道是否也可以覆盖现有列表上的selectionCommand?
ui_filename = "example.ui"
baseUIClass, baseUIWidget = uic.loadUiType(ui_filename)
class Example(baseUIWidget, baseUIClass):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
self.setupUi(self)
self.list.itemSelectionChanged.connect(self.Enforce_Selection_Size)
def Enforce_Selection_Size(self):
selected_items = self.list.selectedItems()
if len(selected_items) > 3:
selected_items[3].setSelected(False)