Будучи студентом во времена коронавируса, школы не открыты, и поэтому я должен работать дома, все еще следуя установленному расписанию c. Я сделал виртуальный планировщик, используя tkinter в python, который говорит мне, какой урок я имею, сколько времени у меня осталось (с помощью индикатора выполнения) и какой урок у меня следующий. Вот как это выглядит .
Но когда урок меняется, старый урок все еще остается, а новый просто записывается поверх него. Тогда это выглядит как this. RE (Религиозное образование) написано выше математики.
Код, который я имею, такой:
from tkinter import *
from datetime import datetime, date
from tkinter.ttk import Progressbar
from tkinter import ttk
import math
num = 0
window = Tk()
window.title("Planner")
monday = ['Maths', 'RE', 'Break', 'English', 'Spanish', 'Lunch', 'Music']
tuesday = ['Science', 'History', 'Break', 'Technology', 'Maths', 'Lunch', 'Geography']
wednesday = ['English', 'Games', 'Break', 'Drama', 'Computing', 'Lunch', 'Science']
thursday = ['Art', 'Geography', 'Break', 'Spanish', 'Computing', 'Lunch', 'English']
friday = ['PE', 'History', 'Break', 'Maths', 'Science', 'Lunch', 'English']
timing = [845, 945, 1045, 1100, 1200, 1300, 1350, 1450]
def update():
global num
global day
global time
now = datetime.now()
hour = now.strftime("%H")
minu = now.strftime("%M")
day = now.strftime("%A")
time = (hour+minu)
if int(time) < 1449 and int(time) > 845:
for i in timing:
if int(time) < int(timing[num]):
lesson_time = (timing[num-1])
break
num = num + 1
num = num - 1
if day == 'Monday':
text = StringVar()
label = Label(window, textvariable = text, font=("Arial Bold", 10), fg='darkblue')
label.grid(row=1, column=0)
text.set(monday[num])
if num <= 5:
next_up = Label(window, text = ("Next: " + monday[num+1]), font=("Arial Bold", 10), fg='darkblue')
next_up.grid(row=1, column=1)
elif day == 'Tuesday':
text = StringVar()
label = Label(window, textvariable = text, font=("Arial Bold", 10), fg='darkblue')
label.grid(row=1, column=0)
text.set(tuesday[num])
if num <= 5:
next_up = Label(window, text = (" Next: " + tuesday[num+1] + ' '), font=("Arial Bold", 10), fg='darkblue')
next_up.grid(row=1, column=1)
elif day == 'Wednesday':
text = StringVar()
label = Label(window, textvariable = text, font=("Arial Bold", 10), fg='darkblue')
label.grid(row=1, column=0)
text.set(wednesday[num])
if num <= 5:
next_up = Label(window, text = ("Next: " + wednesday[num+1]), font=("Arial Bold", 10), fg='darkblue')
next_up.grid(row=1, column=1)
elif day == 'Thursday':
text = StringVar()
label = Label(window, textvariable = text, font=("Arial Bold", 10), fg='darkblue')
label.grid(row=1, column=0)
text.set(thursday[num])
if num <= 5:
next_up = Label(window, text = ("Next: " + thursday[num+1]), font=("Arial Bold", 10), fg='darkblue')
next_up.grid(row=1, column=1)
elif day == 'Friday':
text = StringVar()
label = Label(window, textvariable = text, font=("Arial Bold", 10), fg='darkblue')
label.grid(row=1, column=0)
text.set(friday[num])
if num <= 5:
next_up = Label(window, text = ("Next: " + friday[num+1]), font=("Arial Bold", 10), fg='darkblue')
next_up.grid(row=1, column=1)
else:
no_school = Label(window, text = 'Relax - No School!', font=("Arial Bold", 10), fg='darkblue')
no_school.grid(row=0, column=0)
if day != 'Saturday' or 'Sunday':
style = ttk.Style()
style.theme_use('default')
style.configure("black.Horizontal.TProgressbar", background='black')
bar = Progressbar(window, length=100, style='black.Horizontal.TProgressbar', max=60)
if num == 2:
target = 15
elif num == 5:
target = 50
else:
target = 60
diviser = 60/target
difference = str(timing[num])[-2:]
top = (int(timing[num+1])) - int(difference)
bottom = (int(timing[num])) - int(difference)
round_time = int(minu) - int(difference)
if top < 0:
top = top + 60
if round_time < 0:
round_time = round_time + 60
bar['value'] = (round_time*diviser)
bar.grid(column=1, row=0)
else:
if day == 'Saturday' or day == 'Sunday':
no_school = Label(window, text = 'Relax - No school!', font=("Arial Bold", 10), fg='darkblue')
no_school .grid(row = 0, column = 0)
else:
no_school= Label(window, text = 'Relax - No School!', font=("Arial Bold", 10), fg='darkblue')
no_school.grid(row = 0, column = 0)
update()
if not day == 'Saturday' or 'Sunday':
if not (int(time) > 1449) and not (int(time) < 844):
update = Button(window, text='Update', command=update)
update.grid(row=0, column = 3)
window.mainloop()
Я пытался label.destroy()
раньше изменение текста метки (изменение темы). Это не выдает сообщение об ошибке, но просто не решает проблему.
Кроме того, у меня есть другая проблема. Это то, что я должен вручную нажать «обновить», чтобы он сказал мне последнюю информацию. Есть ли способ его автоматического обновления? Я пытался поместить update()
в a для l oop, но это не сработало.