pyqt: QMessageBox - текстовое поле и набор данных?

Я пытаюсь работать с графическим интерфейсом, сделанным в pyqt. Я пытаюсь создать всплывающее окно с текстовым полем, в котором пользователь может ввести/установить идентификатор пользователя (1-99), а затем нажать кнопку «ОК», чтобы установить его и закрыть окно. Это то, что у меня есть до сих пор.

def viewProfile(self)
        profBox = QMessageBox()
        QMessageBox.about(self, 'Profile', "///Text box where can type User ID:// ",
    QMessageBox.Ok)

Я не уверен, как создать текстовое поле.

Кроме того, если я хочу отобразить целочисленное значение или строку переменной в окне сообщения /box, нужно ли просто оставить это значение вне кавычек, но включить его? Какой у него синтаксис?

Спасибо!


person user3295674    schedule 03.03.2014    source источник
comment
Взгляните на это руководство zetcode.com/gui/pysidetutorial/dialogs. то же самое с другой лицензией. Код должен быть одинаковым.   -  person M4rtini    schedule 03.03.2014


Ответы (2)


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

Итак, вы хотели бы позвонить:

parent_window = self #probably..., depends on your code
minimum_value = 1
maximum_value = 99
default_value = 1
title = "Profile"
message = "Select your user ID"
user_id, ok = QInputDialog.getInt(parent_window, title, message, default_value, minimum_value, maximum_value)

При выполнении строки кода QInputDialog пользователю будет представлено диалоговое окно. Когда пользователь нажимает «ОК» или «Отмена», введенный user_ID будет помещен в user_id, а ok будет логическим значением, указывающим, была ли нажата кнопка «ОК» (True, если была нажата кнопка «ОК», False, если была нажата кнопка «Отмена»).

Если вы хотите поместить целое число в сообщение, вы можете сделать что-то вроде:

message = "Select your user ID. An integer I want you to know about is %d. I hope you find that useful."%my_integer

Но на самом деле это вопрос форматирования строк Python, который вы должны изучить отдельно. Короче говоря, в моем примере вы можете отобразить одну строку. Насколько длинной будет эта строка, зависит от вас (она может состоять из нескольких строк, содержать символы новой строки и т. д.)

person three_pineapples    schedule 04.03.2014

Вы должны использовать QDialog. Таким образом, вы можете настроить его так, как хотите (добавить текстовое поле, кнопку...). Взгляните на мой ответ здесь , в основном это диалог входа в систему, созданный в QTDesigner, но вы можете создать его с помощью кода, так как это намного проще

person Aleksandar    schedule 03.03.2014