Ich habe einen Countdown-Timer mit keinen Bugs, aber es wird nicht gestartet. In der Shell heißt es nur: 'Prozess beendet mit Exitcode 0', aber es startet nicht.Gebaut Timer ohne Bugs - Wont starten (Python, tkinter)
Hier ist mein Code (Wenn es zu lange Kommentar und ich werde Pastebin hinzufügen):
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()
Wenn Sie Python über die Befehlszeile mit diesem Skript ausführen, wird nichts passieren, weil es nur eine Klasse ist und kein Code, der tatsächlich etwas damit macht. –