1

我正在尝试从在线 txt 文件中提取一些文本行并在窗口中显示它们。到目前为止,一切都很好。

我想每隔“x”秒重新加载/刷新该窗口,以便重新绘制其中的标签(以防我添加、减去或更改了该 txt 文件中的文本行),但目前无法做到.

我在根中添加了一个框架,并将标签动态添加到框架中。每隔“x”秒,我想检查该框架是否存在,如果存在,则销毁它,再次提取 txt 文件的内容并重新创建框架和标签,以便我的标签是最新的。

为此,我尝试在函数的开头添加一个“尝试/排除”来检查框架是否存在并销毁它,但我无法让它工作。

有什么想法可以帮助一个非常缺乏经验的 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()
4

1 回答 1

0

mframe 仅在函数内定义。每次通过函数后,它都会自动销毁。要验证这一点,您可以添加:“global mframe”以使其成为一个全局变量,直到下一次调用该函数。

有更好的解决方案,例如将变量存储在另一个答案中建议的类中。

那么更新标签上下文呢?您也可以尝试仅使用单个多行标签。

于 2013-01-30T14:18:39.397 回答