2013-12-10 70 views
0

目前我正試圖禁用某些條件滿足時在我的用戶界面中的某些按鈕。唯一的問題是我只能在創建按鈕後更改其狀態。Python 3 Tkinter - 禁用按鈕不按順序代碼

我做了一個Disabler類來處理這個對我來說,但讓它運行是困難的。禁用程序,如果我得到它的工作,將有任務禁用所有按鈕來做我的計時器類,使用戶知道他們不可點擊(或他們什麼都不做)。

下面是我的代碼的簡化版本只顯示按鈕。

from tkinter import * 

root = Tk() 

class StopWatch(Frame): 
    def __init__(self, parent=None, **kw): 
     Frame.__init__(self, parent, kw) 
     StopWatch.on = 1 
     TimeAdjustLabel = LabelFrame(root, text='Frame',) 
     TimeAdjustLabel.grid(column=0, row=1, padx=10, pady=10) 
     StopWatch.b1 = Button(TimeAdjustLabel, text='Reset', width=10, command=self.Start) 
     StopWatch.b1.grid(row=0, column=0) 

    def Start(self, event=None): 
     if StopWatch.on == 0: 
      StopWatch.on = 1 
     else: 
      StopWatch.on = 0 
     self.enable() 

    def enable(self): 
     if StopWatch.on == 0: 
      StopWatch.b1.configure(state=DISABLED) 
     else: 
      StopWatch.b1.configure(state=NORMAL) 


def main(): 
    sw = StopWatch(root) 
    root.mainloop() 

if __name__ == '__main__': 
    main() 
+0

爲什麼你創建了一個類禁用只是一個方法是?已經夠了......你不覺得嗎? – Gogo

+0

的確如此。我如何讓它工作?你可以直接從Stopwatch類運行該方法嗎? –

+0

把按鈕和labelframe裏面的秒錶類,然後使用'self' – Gogo

回答

1

你幾乎there.You會理解你看到分鐘it.What我想告訴大家的是:

from tkinter import * 
root = Tk() 

class StopWatch(Frame): 
    def __init__(self, parent=None, **kw): 
     Frame.__init__(self, parent, kw) 
     self.on = 1 
     TimeAdjustLabel = LabelFrame(root, text='Frame',) 
     TimeAdjustLabel.grid(column=0, row=1, padx=10, pady=10) 
     self.b1 = Button(TimeAdjustLabel, text='Reset', width=10, command=lambda:self.Start(self.on)) 
     self.b1.grid(row=0, column=0) 

    def Start(self, onoff): 
     if onoff == 0: 
      onoff = 1 
     else: 
      onoff = 0 
     self.enable(onoff) 


    def enable(self,enableonoff): 
     if enableonoff == 0: 
      self.b1.configure(state='disabled') 
     else: 
      self.b1.configure(state='normal') 

def main(): 
    app = StopWatch(root) 
    root.mainloop() 

if __name__ == '__main__': 
    main() 
+1

啊,當然。感謝那。我有一些小問題,但我應該可以自己解決其他問題。 –