Класс 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())
Выход:

Как это работает.
- Сначала создадим кнопку и подключим сигнал ее нажатия к методу 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.
