我刚完成读取文本文件并将其设置为字典的函数,以作为简单时钟应用程序中的一部分调度使用,函数调度可以很好地工作自己在一个单独的脚本,并使用名为:当把变量赋值给函数时,dict不可调用
schedule = schedule()
print(schedule)
然而,当我把它在应用程序中以同样的方式,我得到一个“字典是不可调用的错误”,为什么我不能把它在我的应用程序中的相同方式
#!/usr/bin/python3
# Full screen clock
import tkinter as tk
import time
def schedule(): # this function
flag = False
schedule = dict()
times = []
days_of_the_week = ["Monday", "Tuesday", "Wednesday",
"Thursday", "Friday",
"Saturday", "Sunday"]
with open("/home/pi/Desktop/schedule.txt", 'r') as f:
for line in f:
s = line.strip()
if s == '':
continue
elif s in days_of_the_week:
day = s
times.clear()
else:
times.append(s)
schedule[day] = times[:]
return schedule
root = tk.Tk()
root.attributes("-fullscreen", True)
root.configure(background='black')
frame = tk.Frame(root)
frame.configure(background='black')
frame.pack(expand=tk.TRUE)
schedule = schedule() # function is called here
clock_lt = tk.Label(frame,
font=('Serene MTC', 230),
fg='#FF8000',
bg='black')
clock_lt.pack()
date_etc = tk.Label(frame,
font=('Ariel', 50),
fg='#FF8000',
bg='black')
date_etc.pack()
date_iso = tk.Label(frame,
font=('Ariel', 50),
fg='#FF8000',
bg='black')
date_iso.pack()
running_time = tk.Label(frame,
justify=tk.LEFT,
font=('Ariel', 15),
fg='#CDAF90',
bg='black')
running_time.pack()
def tick():
schedule = schedule()
time1 = ''
time2 = time.strftime('%H:%M')
date_etc_txt = "%s" % (time.strftime('%A')).upper()
date_iso_txt = time.strftime('%d-%B-%Y').upper()
today = date_etc_txt.title()
if time2 != time1:
time1 = time2
clock_lt.config(text=time2)
date_etc.config(text=date_etc_txt)
date_iso.config(text=date_iso_txt)
running_time.config(text=day_schedule[today])
clock_lt.after(20, tick)
tick()
root.mainloop()
我不明白这里有什么不同吗?不幸的是,我不知道如果这个代码完全工作作为现在我不能让过去的这个错误,但是如果你注释掉:
schedule = schedule()
它工作正常。
下面是测试数据我使用的是:
Friday
08:00 - 08:30 Morning briefing
09:15 - 10:30 Shakedown
Saturday
08:00 - 08:30 Morning briefing
09:00 - 10:00 Prep and Warm Up
Sunday
08:00 - 08:30 Morning briefing
09:00 - 10:00 Prep and Warm Up
什么我做错了吗?
所以我改名为变量名day_schedule,我得到了相同的结果回溯(最后最近一次调用)? ./fsclock.py“,第65行,格式为 day_schedule = schedule() TypeError:'dict'对象不可调用 – iFunction
您是在IDLE中运行它吗(还是另外一个IDE,它可以运行python解释器?)。在这种情况下,你需要重新启动解释器。 –
和'schedule = schedule()'行会在您的代码中出现两次。第二次在'tick()'函数中。 –