completer.popup().setStyleSheet("QListView{border: 1px solid gray;}")提示框选择,可以把单击选择,改为双击选择
时间: 2023-06-27 18:07:42 浏览: 98
是的,可以通过设置 `QCompleter` 的 `completionMode` 属性为 `QCompleter.PopupCompletion` 来实现双击选择。
示例代码如下:
```python
from PyQt5.QtWidgets import QApplication, QLineEdit, QCompleter
app = QApplication([])
line_edit = QLineEdit()
completer = QCompleter(["apple", "banana", "cherry"], line_edit)
completer.setCompletionMode(QCompleter.PopupCompletion) # 设置双击选择
line_edit.setCompleter(completer)
line_edit.show()
app.exec_()
```
在上述代码中,我们创建了一个 `QLineEdit` 控件和一个 `QCompleter` 对象,并将其设置为 `QLineEdit` 的自动补全器。然后,我们将 `QCompleter` 的 `completionMode` 属性设置为 `QCompleter.PopupCompletion`,这样用户在弹出的提示框中双击选中某个选项时,才会将其插入到文本框中。
希望可以帮助到您!
相关问题
completer.popup().setSelectionMode(QAbstractItemView.DoubleClicked) TypeError: setSelectionMode(self, mode: QAbstractItemView.SelectionMode): argument 1 has unexpected type 'EditTrigger'
这个错误提示表明 `setSelectionMode()` 函数期望的参数类型是 `QAbstractItemView.SelectionMode`,但是实际传入的数据类型是 `EditTrigger`,因此 Python 报出了类型错误。
这个问题很可能是因为 `EditTrigger` 类型的枚举值被错误地传递给了 `setSelectionMode()` 函数。你需要检查代码中与 `setSelectionMode()` 相关的部分,看看是否有错误的参数传递。如果有,你需要将其替换为正确的参数类型。
同时,你需要确保 `completer.popup()` 返回的对象是 `QAbstractItemView` 的子类,因为只有这些类才支持 `setSelectionMode()` 函数。
pyqt5 completer.popup().setSelectionMode参数详解
`setSelectionMode()`是`QCompleter`类中的一个方法,用于设置自动完成列表中的项目选择模式。它接受一个`Qt.ItemSelectionMode`类型参数,用于指定选择模式。`Qt.ItemSelectionMode`枚举类型有以下四个值:
- `Qt.NoSelection`:禁止选择
- `Qt.SingleSelection`:单选模式
- `Qt.MultiSelection`:多选模式
- `Qt.ExtendedSelection`:扩展多选模式
在`Qt.SingleSelection`模式下,用户可以通过点击或键盘上下箭头来选择一个项目。在`Qt.MultiSelection`和`Qt.ExtendedSelection`模式下,用户可以通过使用鼠标或键盘来选择多个项目。
在`Qt.MultiSelection`模式下,选择一个项目会将该项目添加到当前选择集中。在`Qt.ExtendedSelection`模式下,用户可以通过按住Ctrl键来选择多个不相邻的项目,也可以按住Shift键来选择多个相邻的项目。
例如,以下代码将自动完成列表的选择模式设置为`Qt.ExtendedSelection`:
```python
completer = QCompleter()
completer.setModel(model)
completer.popup().setSelectionMode(Qt.ExtendedSelection)
```
这将允许用户在自动完成列表中选择多个项目,并且可以通过按住Ctrl或Shift键来选择多个项目。
阅读全文