2014-02-09 45 views
1

我有一個簡單的計時器工作的問題。無論何時執行代碼,它都會顯示開始時間值以倒計時,然後倒計時1秒。在那之後,我收到以下錯誤:python GTK 3 Glade 3 Timer

Traceback (most recent call last): 
    File "C:\Python33\lib\site-packages\gi\overrides\GLib.py", line 633, in <lambda> 
    return (lambda data: callback(*data), user_data) 
TypeError: 'bool' object is not callable 

下面是我的代碼:

從gi.repository進口的Gtk,GObject的

class Main:

def __init__(self): 
    # create an instance of the builder 

    self.builder = Gtk.Builder() 
    self.builder.add_from_file('Main_ver_c.glade') 
    self.builder.connect_signals(self) 

    # Setup the main window 
    self.window = self.builder.get_object("program_main") 
    self.window.set_title("Automated Benchtop Medical Device Cleaner") 
    self.window.show_all() 

    # Setup Timer 
    self.labelcycle = self.builder.get_object('stage_time') 


    # Closes program on 'X' press 
    def on_DeleteWindow(self, object, data=None): 
     print ("quit with cancel") 
     Gtk.main_quit() 

    # Displays Timer 
    def displaytimer(self,time): 
     state = True 
     self.labelcycle.set_text(str(time)) 
     print(time) 
     time -= 1 
     print(time) 
     if time < 0: 
      state = False 
      print("timer stop") 
     return True 

    # Initialize Timer 
    def startcycletimer(self, counter): 
     GObject.timeout_add_seconds(1, self.displaytimer(counter)) 


if __name__ == '__main__': 
    main = Main() 
    main.startcycletimer(5) 
    Gtk.main() 

回答

0

我還沒有真正使用過PyGTK的,但從我看到的問題最有可能在startcycletimer方法中:

它應該是GObject.timeout_add_seconds(1, self.displaytimer)而不是GObject.timeout_add_seconds(1, self.displaytimer(counter))

您需要將調用者傳遞給函數,而不是輸出。

+0

謝謝!那就是訣竅。 – kphoenix7