2016-04-02 11 views
-1

私はバグのないカウントダウンタイマーを構築しましたが、起動しません。シェルでは、「プロセスは終了コード0で終了しましたが、起動しません。 (その長すぎるコメントと私はペーストビンを追加する場合)バグのないタイマーの構築 - 起動しない(Python、tkinter)

は、ここに私のコードです:

import tkinter 

DEFAULT_GAP = 60 * 25 


class study_timer: 
    def __init__(self, master): 
     self.master = master 
     self.mainframe = tkinter.Frame(self.master, bg='white') 
     self.mainframe.pack(fill = tkinter.BOTH, expand=True) 

     self.timer_text = tkinter.StringVar() 
     self.timer_text.trace('w', self.build_timer) 
     self.time_left = tkinter.IntVar() 
     self.time_left.set(DEFAULT_GAP) 

     self.build_grid() 
     self.build_banner() 
     self.build_buttons() 
     self.build_timer() 

     self.update() 

    def build_grid(self): 
     self.mainframe.columnconfigure(0, weight=1) 
     self.mainframe.rowconfigure(0, weight=0) 
     self.mainframe.rowconfigure(0, weight=1) 
     self.mainframe.rowconfigure(0, weight=0) 

    def build_banner(self): 
     banner = tkinter.Label(
      self.mainframe, 
      bg='black', 
      text='TIMER', 
      fg='white', 
      font=('Ravie Regular', 30) 
     ) 
     banner.grid(
      row=0, column=0, 
      stick='ew', 
      padx=10, pady=10 
     ) 
    def build_buttons(self): 
     buttons_frame = tkinter.Frame(self.mainframe) 
     buttons_frame.grid(row=2, 
          column=0, 
          sticky='nsew', 
          padx=10, pady=10) 
     buttons_frame.columnconfigure(0, weight=1) 
     buttons_frame.columnconfigure(1,weight=1) 

     self.start_button = tkinter.Button(
      buttons_frame, 
      text='Start', 
      command= self.start_timer 
     ) 

     self.stop_button = tkinter.Button(
      buttons_frame, 
      text='Stop', 
      command=self.stop_timer 
     ) 


     self.start_button.grid(row=0, column=0, sticky='ew') 
     self.stop_button.grid(row=0, column=1, sticky='ew') 
     self.stop_button.config(state=tkinter.DISABLED) 

    def build_timer(self, *args): 
     timer = tkinter.Label(
      self.mainframe, 
      text=self.timer_text.get(), 
      font=('Helvetica', 36) 
     ) 
     timer.grid(row=1, column=0, sticky='nsew') 

    def start_timer(self): 
     self.time_left.set(DEFAULT_GAP) 
     self.running = True 
     self.stop_button.config(state=tkinter.NORMAL) 
     self.start_button.config(state=tkinter.DISABLED) 

    def stop_timer(self): 
     self.running = False 
     self.stop_button.config(state=tkinter.NORMAL) 
     self.start_button.config(state=tkinter.NORMAL) 

    def min_sec(self, seconds): 
     return int(seconds/60), int(seconds%60) 

    def update(self): 
     time_left = self.time_left.get() 

     if self.running and time_left: 
      minutes, seconds = self.min_sec(time_left) 
      self.time_left.set(time_left-1) 

     else: 
      self.stop_timer() 
      self.master.after(1000, self.update) 

     if __name__ == "__main__": 
      root = tkinter.Tk() 
      timer = study_timer(root) 
      root.mainloop() 
+0

Python <スクリプトの名前>をコマンドラインからそのスクリプトで実行すると、クラスだけで実際には何も実行しないので何も起こりません。 –

答えて

2

は、あなたが戻って、その下の2つのインデントを最後の部分if __name__ == "__main__":、すべてを移動する必要があります。

+0

ありがとう私はそれを受け取り、次を受け取りました:更新中の行94、更新時 'self.runningとtime_left: AttributeError: 'study_timer'オブジェクトに属性 'running''がありません –

+0

start_timerの前にupdateを呼び出していますあなたは走っていると宣言します。更新を実行する前にタイマーを起動するか、__initでself.running = Falseを追加する__() –

+0

どこにアップデートを置くのですか?私はself.updtae()を削除し、私のGUIは機能しましたが、開始ボタンと停止ボタンだけがあり、タイマーやカウントダウンはありませんでした。すべての質問を申し訳ありません。私はコーディングに新しいです! –

関連する問題