我试图从在线txt文件中提取一些文本行并在窗口中显示它们。到目前为止,非常好。
我想每隔'x'秒重新加载/刷新一次该窗口,以便重新绘制其中的标签(如果我已经添加,减去或更改了该txt文件中的文本行),但是无法做到它到目前为止。
我已经向根添加了一个框架,并动态地将标签添加到框架中。 每隔'x'秒,我想检查一下这个框架是否存在 - 如果存在 - 将其销毁,再次拉出txt文件的内容并重新创建框架和标签,以便我的标签是最新的。
为此,我尝试在我的函数开始时添加一个'Try / Except'来检查框架是否存在并将其销毁,但我无法使其工作。
任何可以帮助非常缺乏经验的python爱好者的想法?
#coding:utf-8
from Tkinter import *
import urllib
import time
mroot = Tk()
def mactions():
mconteudo = urllib.urlopen('http://www.xyz.com.br/recados.txt')
mtexto = mconteudo.read().split('***')
#this is where I think I'm doing something wrong - I always get a NameError.
try:
mframe.destroy()
except NameError:
print '- NameError -'
except UnboundLocalError:
print '- UnboundLocalError -'
mframe = Frame(mroot)
for i in mtexto:
w = Label(mframe, text=i)
w.pack()
wseparador = Label(mframe, text='________')
wseparador.pack()
mframe.pack()
mroot.after(2000, mactions)
mactions()
mroot.mainloop()
答案 0 :(得分:0)
mframe仅在函数内定义。它会在每次传递函数后自动销毁。要验证这一点,您可以添加:“global mframe”,使其成为一个全局变量,直到下一次调用该函数为止。
有更好的解决方案,例如将变量存储在类中,如另一个答案所示。
更新标签上下文怎么样?您也可以尝试仅使用一个多行标签。