@sherwood_littel
Для создания автокомплита в PyQt5 можно использовать класс QCompleter. Вот пример, который демонстрирует, как создать автокомплит для текстового поля:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QCompleter from PyQt5.QtCore import QStringListModel class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(100, 100, 300, 200) self.setWindowTitle('Autocomplete') # Создаем текстовое поле self.textbox = QLineEdit(self) self.textbox.setGeometry(50, 50, 200, 30) # Создаем список слов для автокомплита words = ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig'] # Создаем модель для автокомплита model = QStringListModel(words) # Создаем объект автокомплита completer = QCompleter(model, self.textbox) # Установка автокомплита в текстовое поле self.textbox.setCompleter(completer) app = QApplication([]) main_win = MainWindow() main_win.show() app.exec_() |
Мы создаем текстовое поле, список слов для автокомплита и модель (QStringListModel), которую мы используем для создания объекта QCompleter. Затем мы устанавливаем этот автокомплит в текстовое поле, и теперь, когда пользователь начинает вводить текст, всплывает список предложений.
@sherwood_littel
Вот исходный код для создания автодополнения с использованием QLineEdit и QStringListModel в PyQt5:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QCompleter from PyQt5.QtCore import QStringListModel class AutoCompleteWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(100, 100, 300, 200) self.setWindowTitle('Autocomplete') # Создаем текстовое поле self.textbox = QLineEdit(self) self.textbox.setGeometry(50, 50, 200, 30) # Создаем список слов для автокомплита words = ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig'] # Создаем модель для автокомплита model = QStringListModel(words) # Создаем объект автокомплита completer = QCompleter() completer.setModel(model) # Устанавливаем автокомплит в текстовое поле self.textbox.setCompleter(completer) if __name__ == '__main__': import sys app = QApplication(sys.argv) main_win = AutoCompleteWindow() main_win.show() sys.exit(app.exec_()) |
Этот код создает окно с текстовым полем, в котором будет работать автодополнение. В этом примере слова для автодополнения предварительно заданы в списке words
, создается модель QStringListModel
, которая передается в QCompleter
, и, наконец, устанавливается автодополнение для текстового поля.