В библиотеке Qt присутствует класс QCompleter, который позволяет предлагать автодополнение к вводимому слову в полях ввода. Также данный класс поддерживается и библиотекой PyQt5.
В минимально варианте применение данного класса может выглядеть следующим образом:
- # Создаём поле ввода
- lineEdit = QLineEdit(self)
- strList = ['Python', 'PyQt5', 'Qt', 'Django', 'QML'] # Создаём список слов
- # Создаём QCompleter, в который устанавливаем список, а также указатель на родителя
- completer = QCompleter(strList, lineEdit)
- lineEdit.setCompleter(completer) # Устанавливает QCompleter в поле ввода
Применительно к использованию в программе данный код может быть внедрён следующим образом:
- from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QGridLayout, QWidget, QLineEdit, QCompleter
- from PyQt5.QtCore import QSize
- # Наследуемся от QMainWindow
- class MainWindow(QMainWindow):
- # Переопределяем конструктор класса
- def __init__(self):
- # Обязательно нужно вызвать метод супер класса
- QMainWindow.__init__(self)
- self.setMinimumSize(QSize(480, 80)) # Устанавливаем размеры
- self.setWindowTitle("Проверка автодополнения") # Устанавливаем заголовок окна
- central_widget = QWidget(self) # Создаём центральный виджет
- self.setCentralWidget(central_widget) # Устанавливаем центральный виджет
- grid_layout = QGridLayout() # Создаём QGridLayout
- central_widget.setLayout(grid_layout) # Устанавливаем данное размещение в центральный виджет
- grid_layout.addWidget(QLabel("Проверка автодополнения", self), 0, 0)
- # Создаём поле ввода
- lineEdit = QLineEdit(self)
- strList = ['Python', 'PyQt5', 'Qt', 'Django', 'QML'] # Создаём список слов
- # Создаём QCompleter, в который устанавливаем список, а также указатель на родителя
- completer = QCompleter(strList, lineEdit)
- lineEdit.setCompleter(completer) # Устанавливает QCompleter в поле ввода
- grid_layout.addWidget(lineEdit, 0, 1) # Добавляем поле ввода в сетку
- if __name__ == "__main__":
- import sys
- app = QApplication(sys.argv)
- mw = MainWindow()
- mw.show()
- sys.exit(app.exec())
Большое спасибо.
Вы очень мне помогли.
Пожалуйста ))
Будут какие затруднения, задавайте вопросы на форуме в разделе PyQt5. PyQt5 не является моей рабочей нишей, но я работаю периодически с python, а сама библиотека Qt - это моё основное направление. Так что, если будет возможным, отвечу на вопросы или направлю, куда копать. Да и сообщество может поможет, ну и сами не стесняйтесь отвечать на вопросы других пользователей.