Останавливать программу на Python, пока пользователь не выполнит действие

#python #gtk

#питон #gtk ( гтк ) #python #gtk

Вопрос:

Моя оригинальная программа использовала input , вот так:

 n = input("Enter your favorite number: ")
# do stuff with number
  

Теперь я переключился на графический интерфейс GTK, но все еще хочу выполнить то же самое. Теперь взгляните на этот очень похожий фрагмент кода:

 n = myWindow.getNumber()
# do stuff with number
  

Можно ли было бы написать getNumber() метод, который возвращается только после того, как пользователь нажимает кнопку отправки в окне? (например, как работает input функция) или это мой единственный вариант:

 def callback(widget, event):
    n = myWindow.inputWidget.getValue()
    # do stuff with number

n = myWindow.getNumber(callback)
  

Обновление: я собираюсь сделать это без gtk.Диалоговое окно, поскольку я не хочу, чтобы диалоговое окно появлялось каждый раз, когда требуется пользовательский ввод.

Ответ №1:

Что вам нужно, так это модальный диалог. Я вообще не знаю GTK (или PyGTK), но, кажется, в документации есть пример.

Комментарии:

1. Спасибо, но модальное диалоговое окно просто запрещает пользователю взаимодействовать с любыми виджетами за пределами диалогового окна.

2. @Sam: насколько я знаю, метод run gtk. Диалоговое окно блокирует программу и возвращается только тогда, когда получает ответ (обратный вызов не требуется). Создание подкласса gtk. Диалог может быть тем, что вам нужно.