2014-06-12 50 views
1

我正在使用python GUI(TK)。我有一个运行很长程序的按钮 - 但我希望在点击它之后立即禁用它。 它看起来像这样:使用Tk按钮的Python

button = tk.Button(self, text="blabla", command= lambda: self.foo(param, button) 
def foo(self, button): 
     button.configure (state = "disabled") 
     #now call the function that takes time 
     goo() 
def goo(): 
    doLongAction() 

问题是按钮仅咕后禁用()返回,接着foo的回报。 有没有办法立即禁用它? 感谢

+0

您应该解决您的压痕,以便更容易看到发生了什么事情。 – Brionius

+0

我编辑它,所以它会更容易理解 – user2950329

回答

3

你需要通过调用update_idletasks方法禁用它后更新按钮控件:

button = tk.Button(self, text="blabla", command= lambda: self.foo(param, button) 
def foo(self, button): 
     button.configure (state = "disabled") 
     ########################## 
     button.update_idletasks() 
     ########################## 
     #now call the function that takes time 
     goo() 
def goo(): 
    doLongAction() 
+0

谢谢,但我不知道如何使用它...我应该如何修改我的代码上面?我应该离开命令为富还是改变它? – user2950329

+0

@ user2950329 - 当你禁用按钮时,你会在行后面调用'update_idletasks'方法。看我的编辑。 – iCodez

+0

作品!非常感谢你!! – user2950329