Evgenii Legotckoi
15 марта 2017 г. 22:12

PyQt5 - Урок 005. Автодополнение для поля ввода с помощью QCompleter

В библиотеке Qt присутствует класс QCompleter, который позволяет предлагать автодополнение к вводимому слову в полях ввода. Также данный класс поддерживается и библиотекой PyQt5.

В минимально варианте применение данного класса может выглядеть следующим образом:

  1. # Создаём поле ввода
  2. lineEdit = QLineEdit(self)
  3. strList = ['Python', 'PyQt5', 'Qt', 'Django', 'QML'] # Создаём список слов
  4. # Создаём QCompleter, в который устанавливаем список, а также указатель на родителя
  5. completer = QCompleter(strList, lineEdit)
  6. lineEdit.setCompleter(completer) # Устанавливает QCompleter в поле ввода

Применительно к использованию в программе данный код может быть внедрён следующим образом:

  1. from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QGridLayout, QWidget, QLineEdit, QCompleter
  2. from PyQt5.QtCore import QSize
  3.  
  4.  
  5. # Наследуемся от QMainWindow
  6. class MainWindow(QMainWindow):
  7. # Переопределяем конструктор класса
  8. def __init__(self):
  9. # Обязательно нужно вызвать метод супер класса
  10. QMainWindow.__init__(self)
  11.  
  12. self.setMinimumSize(QSize(480, 80)) # Устанавливаем размеры
  13. self.setWindowTitle("Проверка автодополнения") # Устанавливаем заголовок окна
  14. central_widget = QWidget(self) # Создаём центральный виджет
  15. self.setCentralWidget(central_widget) # Устанавливаем центральный виджет
  16.  
  17. grid_layout = QGridLayout() # Создаём QGridLayout
  18. central_widget.setLayout(grid_layout) # Устанавливаем данное размещение в центральный виджет
  19.  
  20. grid_layout.addWidget(QLabel("Проверка автодополнения", self), 0, 0)
  21.  
  22. # Создаём поле ввода
  23. lineEdit = QLineEdit(self)
  24. strList = ['Python', 'PyQt5', 'Qt', 'Django', 'QML'] # Создаём список слов
  25. # Создаём QCompleter, в который устанавливаем список, а также указатель на родителя
  26. completer = QCompleter(strList, lineEdit)
  27. lineEdit.setCompleter(completer) # Устанавливает QCompleter в поле ввода
  28. grid_layout.addWidget(lineEdit, 0, 1) # Добавляем поле ввода в сетку
  29.  
  30.  
  31. if __name__ == "__main__":
  32. import sys
  33.  
  34. app = QApplication(sys.argv)
  35. mw = MainWindow()
  36. mw.show()
  37. sys.exit(app.exec())

Рекомендуемые статьи по этой тематике

По статье задано0вопрос(ов)

2

Вам это нравится? Поделитесь в социальных сетях!

c
  • 18 декабря 2017 г. 22:41

Большое спасибо.
Вы очень мне помогли.

Evgenii Legotckoi
  • 19 декабря 2017 г. 0:26

Пожалуйста ))
Будут какие затруднения, задавайте вопросы на форуме в разделе PyQt5. PyQt5 не является моей рабочей нишей, но я работаю периодически с python, а сама библиотека Qt - это моё основное направление. Так что, если будет возможным, отвечу на вопросы или направлю, куда копать. Да и сообщество может поможет, ну и сами не стесняйтесь отвечать на вопросы других пользователей.

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь