大家好,我遇到了这个问题。我有一个使用 QCompleter 弹出列表实现搜索的 QLineEdit。如果在 QlineEdit 中输入了至少一个字母,则会出现该列表(图 1)。我需要实现,如果用户将光标放在 QLineEdit 中,那么 QCompliter 中所有可能的选项都应该出现(图 2)。
我在 C++ 中发现了一个类似的问题,建议使用以下方法执行此操作:
my_completer.setCompletionPrefix("")
my_completer.complete()
但是,这对我不起作用。你能告诉我如何完成我的任务吗?整个程序代码:
import sys
from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication, QLineEdit, QCompleter
class Window(QMainWindow):
def __init__(self):
super().__init__()
# Текстовая линия
line1 = QLineEdit(self)
line1.setGeometry(100,100,200,35)
# Комплитер
my_list = ["Apple", "Apartments", "Application"]
my_completer = QCompleter(my_list)
line1.setCompleter(my_completer)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.setGeometry(450, 200, 800, 600)
window.show()
sys.exit(app.exec_())


您需要设置一个事件过滤器并跟踪您的输入何时获得焦点: