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