Отключить кнопку Tkinter во время выполнения команды

Я хочу отключить tk inter button при выполнении команды и включить ее после завершения выполнения команды. Я пробовал этот код, но, похоже, он не работает.

from Tkinter import * import time top = Tk() def Run(object): object.config(state = 'disabled') print 'test' time.sleep(5) object.config(state = 'normal') b1 = Button(top, text = 'RUN', command = lambda : Run(b1)) b1.pack() top.mainloop() 

Выполнение команды выполняется хорошо, но каждый раз, когда я нажимаю кнопку при выполнении команды, «тестовый» появляется в консоли сразу после завершения функции «Запуск». Это означает, что кнопка не отключается при выполнении функции Run. Любое предложение исправить эту проблему?

заранее спасибо

3 Solutions collect form web for “Отключить кнопку Tkinter во время выполнения команды”

Тебе нужно

 object.config(state = 'disabled') b1.update() time.sleep(5) object.config(state = 'normal') b1.update() 

обновить кнопку и передать выполнение Tkinter.

Используйте pack_forget () для отключения и pack () для повторного включения. Это приводит к тому, что оконный менеджер «pack» временно «забывает», что у него есть кнопка, пока вы снова не вызовете пакет.

 from Tkinter import * import time top = Tk() def Run(object): object.pack_forget() print 'test' time.sleep(5) object.pack() b1 = Button(top, text = 'RUN', command = lambda : Run(b1)) b1.pack() top.mainloop() 

Я предпочитаю использовать метод «после» Tkinter, поэтому другие вещи можно сделать, пока 5 секунд отсчитывают. В этом случае это только кнопка выхода.

 from Tkinter import * ##import time from functools import partial top = Tk() def Run(object): if object["state"] == "active": object["state"] = "disabled" object.after(5000, partial(Run, object)) else: object["state"] = "active" print object["state"] b1 = Button(top, text = 'RUN') b1.pack() ## pass b1 to function after it has been created b1["command"] = partial(Run, b1) b1["state"]="active" Button(top, text="Quit", command=top.quit).pack() top.mainloop() 
  • Tkinter: Как получить рамку в окне холста, чтобы расширить размер холста?
  • Как понять закрытие в лямбда?
  • Как удалить все из текстового виджета tkinter?
  • Продолжайте работу tkinter Progressbar до создания файла
  • Добавление полосы прокрутки в группу виджетов в Tkinter
  • Python 2.7 CV2 & Tkinter с веб-камерой
  • Поднимите и поднимите холст поверх холста в tkinter
  • Как очистить элементы от виджета ttk.Treeview?
  • Использование модуля Multiprocessing для обновления Tkinter GUI
  • Почему линии холста Tkinter зазубрены?
  • Гиперссылка в текстовом виджете Tkinter?
  • Python - лучший язык программирования в мире.