如何每4秒更新一次tkinter窗口?

时间:2018-07-25 21:32:24

标签: python python-3.x testing tkinter seconds

我正在尝试创建一个程序,该程序从文件中读取行并将其放入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窗口相应地更新。

1 个答案:

答案 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()

我们首先读到的内容:

enter image description here

然后,我对文件进行了更改并从记事本中保存了

enter image description here