Я тестирую простой пример приложения PyGTK на основе кода в другом вопросе SO: Как установить кнопку по умолчанию в PyGTK? .
Однако я пытаюсьвыяснить, как получить доступ к значению, которое возвращает функция run ().Я знаю, что он передается в button.connect (), а другие аргументы передаются в run () при его вызове, но поскольку функция вызывается последней, я не знаю, как получить доступ к возвращаемому значению.
def foo():
def run(button, window, entry):
try: snooze_time = int(entry.get_text())
except ValueError: snooze_time = 5
snooze_confirm_message = 'Snoozing for ' + str(snooze_time) + ' minutes'
dialog = gtk.MessageDialog(window, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, snooze_confirm_message)
dialog.run()
dialog.destroy()
return snooze_time
snooze_time = None #Defaults to None
window = gtk.Window()
window.connect("destroy", gtk.main_quit)
vbox = gtk.VBox(spacing = 40)
snooze_time_entry = gtk.Entry()
vbox.pack_start(snooze_time_entry)
button = gtk.Button(stock = gtk.STOCK_SAVE)
#Here the function is being passed to the button, though it is not called until later.
button.connect("clicked", run, window, snooze_time_entry)
button.set_flags(gtk.CAN_DEFAULT)
window.set_default(button)
vbox.pack_start(button)
window.add(vbox)
window.show_all()
gtk.main()
print("the result is " + str(snooze_time))
Если есть обходной путь, который более идиоматичен с PyGTK, он был бы здесь полезен, хотя мне также было бы интересно узнать более общий подход Python к этому.