我正在尝试创建一个程序,该程序从文件中读取行并将其放入tkinter窗口。目前,我的代码是这样:
def read_notifications():
#def update():
# window.config(text=str(random.random()))
# window.after(1000, update)
aaa = 1
while True:
re = open("Y:/System Info/notifications.txt", "r")
rf = re.read()
rh = rf.count("\n")
re.close()
lines = [line.rstrip('\n') for line in open("Y:/System Info/notifications.txt")]
rk = -1
while True:
aaa = aaa + 2
rk = rk + 1
#print(lines[rk])
rl = rk + 1
ya = lines[rk].split("#")
yb = str(tomrt)
if ya[1] == yb:
yc = "Tommorow"
else:
if ya[1] == "0":
yc = "Monday"
if ya[1] == "1":
yc = "Tuesday"
if ya[1] == "2":
yc = "Wednesday"
if ya[1] == "3":
yc = "Thursday"
if ya[1] == "4":
yc = "Friday"
if ya[1] == "5":
yc = "Saturday"
if ya[1] == "6":
yc = "Sunday"
c = 650
window = tk.Tk()
#back = tk.Frame(width=700, height=c)
#back.pack()
window.title("Notifications")
window.iconbitmap("1235.ico")
#Subject
lbl = tk.Label(window, text=ya[0])
lbl.config(font=("Courier", 18))
lbl.grid(column=0, row=0)
#lbl.pack(side=tk.LEFT,)
#Day
lbl = tk.Label(window, text=" " + yc)
lbl.config(font=("Courier", 16))
lbl.grid(column=2, row=0)
#Type
lbl = tk.Label(window, text=ya[2])
lbl.config(font=("Courier", 16))
lbl.grid(column=4, row=0)
#Descripion
lbl = tk.Label(window, text=ya[4])
lbl.config(font=("Courier", 16))
lbl.grid(column=6, row=0)
#lbl.pack(side=tk.LEFT)
#window.after(1000, update)
if rl == rh:
print("hello")
break
if aaa > 2:
time.sleep(4)
window.destroy()
else:
window.mainloop()
我不确定为什么这不能正常工作。我正在尝试这样做,以便tkinter窗口每4秒更新一次,因为另一个程序正在对notifications.txt文件进行更改,并且我希望tkinter窗口相应地更新。
答案 0 :(得分:1)
您的代码有点难以重做,但这是一个如何监视文件的有效示例。
说我有一个包含4行的文件,我们将此文件称为xmlns:viewModels="clr-namespace:FoosballXamarin.ViewModels"
xmlns:helpers="clr-namespace:FoosballXamarin.Helpers"
:
my_file
我们要做的就是每4秒钟更新一次标签,以便我们可以使用1 test
2 testing
3 more testing
4 test again
方法来保持前进。
看看下面的代码。
after()
我们首先读到的内容:
然后,我对文件进行了更改并从记事本中保存了