@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, и, наконец, устанавливается автодополнение для текстового поля.