Выпадающее меню Tkinter переходит в бесконечный цикл

Я использую следующий фрагмент кода, принятый отсюда Мне нужно дождаться, пока пользователь выберет вариант, а затем заполнить остальную часть кода (чтобы добавить в файл xml - программу генератора метаданных, над которой я работаю с подробностями здесь)

from Tkinter import *

def print_it(event):
   print var.get()

root = Tk()
var = StringVar()
var.set("Set Copyright for: " + str(File))
OptionMenu(root, var, "Internal Use Only","Internal & Community Use","Whole Of Government Use", "Project Specific Licence","No licence constraints on ATGIS/TRC use", command=print_it).pack()
root.mainloop() 

должно ли это быть частью определения выше?

for node in tree.findall('.//copyright'):
    node.text = str(var) # not sure how to call the output.

person GeorgeC    schedule 02.02.2012    source источник
comment
@Hoxieboy - Ваш комментарий был удален (??). Я не хочу использовать def print_it - мне было не совсем понятно, почему он был там в оригинальной программе, и скрипт не работал, когда он был закомментирован. Я просто хочу, чтобы скрипт запрашивал у пользователя ввод, помещал его в файл xml, а затем продолжал автозаполнение или задавал другие вопросы по мере необходимости.   -  person GeorgeC    schedule 02.02.2012


Ответы (1)


Вы начали цикл событий с:

root.mainloop() 

Похоже, вам просто нужно место для выхода из цикла и выполнения другой обработки. Например, поскольку процесс print_it кажется идеальным, вы можете изменить его следующим образом:

def print_it(event):
    print var.get()
    root.quit()

Теперь всякий раз, когда выполняется print_it, основной цикл завершается - любой код ниже «root.mainloop ()» будет выполняться сразу. Так что вы могли бы продолжить оттуда ...

person Niall Byrne    schedule 02.02.2012
comment
Спасибо, приятель... это было так просто. Мне действительно нужно тратить время на изучение основ должным образом, а не просто на изучение того, что необходимо для выполнения работы. - person GeorgeC; 03.02.2012