如何在不使用Python3的按钮的情况下更改Tkinter标签的文本?

时间:2019-02-15 22:04:47

标签: python python-3.x tkinter label

如何在不按按钮的情况下更新此代码的标签?

import tkinter
from tkinter import *
main=Tk()
main.attributes("-fullscreen", False)
lo=open("/xxx/xx/x.l" , "r")
l=lo.read()
lo.close()
info=Label(main, text="Watch Log of COW")
log=Label(main, text=l)
log.config(text=l)
info.pack()
log.pack()
main.mainloop()

2 个答案:

答案 0 :(得分:0)

没有您在系统上使用的文件,我无法提供完美的解决方案,但是l可能不是字符串吗?您是否尝试过:

import tkinter
from tkinter import *
main=Tk()
main.attributes("-fullscreen", False)
lo=open("/xxx/xx/x.l" , "r")
l=lo.read()
lo.close()
info=Label(main, text="Watch Log of COW")
log=Label(main, text=str(l))
log.config(text=str(l))
info.pack()
log.pack()
main.mainloop()

在哪里尝试使用str(l)将其显式转换为字符串?如果提供了您的错误的完整回溯,将很有帮助。也许错误在于打开文件?您是否尝试过:

with open("/xxx/xx/x.l" , "r") as lo:
    l=lo.read()

或者错误可能是使用.config()而不是.configure()(这就是我一直使用的,我不知道它们之间的区别)

您的问题太广泛了,我们无法真正提供帮助

答案 1 :(得分:0)

您需要定期监视文件的更新,如果文件已更改,则需要更新标签。使用文件上次修改时间来检查文件更改,并使用.after(...)定期检查它,如下所示:

import os
from tkinter import *

root = Tk()

Label(text='Watch Log of COW').pack()
log = Label(text='abc')
log.pack()

last_mtime = None
cow = '/xxx/x.l'

def monitor_file_change():
    global last_mtime
    mtime = os.path.getmtime(cow)
    if last_mtime is None or mtime > last_mtime:
        with open(cow) as f:
            log['text'] = f.read()
        last_mtime = mtime
    root.after(1000, monitor_file_change)

monitor_file_change()
root.mainloop()