Evgenii Legotckoi
15 березня 2017 р. 22:12

PyQt5 - Урок 005. Автозаповнення для поля введення за допомогою QCompleter

У бібліотеці 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())

Рекомендовані статті на цю тему

По статті запитували0питання

2

Вам це подобається? Поділіться в соціальних мережах!

c
  • 18 грудня 2017 р. 22:41

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

Evgenii Legotckoi
  • 19 грудня 2017 р. 00:26

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

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up