私はバグのないカウントダウンタイマーを構築しましたが、起動しません。シェルでは、「プロセスは終了コード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()
Python <スクリプトの名前>をコマンドラインからそのスクリプトで実行すると、クラスだけで実際には何も実行しないので何も起こりません。 –