PyQt QInputDialog в Python — ввод пользовательских данных

Класс QInputDialog создает виджет диалогового окна ввода в Python, который получает ввод от пользователей. Входное значение может быть строкой, целым числом, числом с плавающей точкой или элементом из списка.

QInputDialog имеет пять статических методов для получения пользовательских данных:

  • getText() – позволяет пользователю ввести одну строку.
  • getInt() – позволяет пользователю ввести целое число.
  • getDouble() – позволяет пользователю ввести число с плавающей точкой.
  • getMultiLineText() – позволяет пользователю вводить многострочный текст.
  • getItem() – позволяет пользователю выбрать элемент из списка.

Эти методы возвращают кортеж из двух элементов. Первый элемент хранит пользовательский ввод, а второй элемент указывает, выбирает ли пользователь кнопку ОК или Отмена.

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

import sys
from PyQt6.QtWidgets import QApplication,  QInputDialog, QWidget, QVBoxLayout,  QPushButton


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt Input Dialog')
        self.setGeometry(100, 100, 300, 100)

        layout = QVBoxLayout()
        self.setLayout(layout)

        # file selection
        btn = QPushButton('Set Window Title')
        btn.clicked.connect(self.open_input_dialog)

        layout.addWidget(btn)

        self.show()

    def open_input_dialog(self):
        title, ok = QInputDialog.getText(self, 'Title Setting', 'Title:')
        if ok and title:
            self.setWindowTitle(title)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())

Выход:

Пример с PyQt QInputDialog

Как это работает.

  • Сначала создадим кнопку и подключим сигнал ее нажатия к методу open_input_dialog:
btn = QPushButton('Set Window Title')
btn.clicked.connect(self.open_input_dialog)
  • Во-вторых, определите метод open_input_dialog и вызовите метод getText(), чтобы получить заголовок, введенный пользователем:
def open_input_dialog(self):
    title, ok = QInputDialog.getText(self, 'Title Setting', 'Title:')
    if ok and title:
        self.setWindowTitle(title)

Метод getText() возвращает кортеж из двух элементов, назначенных переменной title и ok.

Если ввести текст и нажать кнопку «ОК», заголовок сохранит введенный текст, а переменная ok будет иметь значение True.

Однако если вы введете какой-либо текст, а затем нажмете кнопку «Отмена», переменная title сохранит введенный текст, а переменная ok будет иметь значение False.

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *