2

これは非常に単純な Python Tk プログラムです。単純な問題を止めることができないようで、何か簡単なものを見逃していると確信しています。

私はラベルを作ります:

myLabelText = StringVar()
myLabelText.set("Something kinda long")
myLabel = Label(frame, textvariable=myLabelText).pack()

後で同じプログラムで、そのラベルを「Foo」と言うように更新したいと思います...

myLabelText.set("Foo")
frame.update_idletasks()

ラベルは "Fooething kinda long" のようになりました。目標は、"Foo" だけにして、残りのラベル テキストをクリアすることです。

ラベルをスペースの長い文字列に設定しようとしましたが、何らかの理由でそのフィールドのテキストがクリアされません。これを行う正しい方法は何ですか?


編集

これは私の問題を示す完全な例です。

from Tkinter import *
import tkFileDialog, Tkconstants
import time
import urllib2

def main():
    " Controlling function "

    root = Tk()
    app = App(root)
    root.mainloop()

class App:
    " Class for this application "

    def __init__(self, master):

        # Setup the window
        frame = Frame(master, width=400, height=200)
        frame.pack()
        frame.pack_propagate(0)
        self.frame = frame
        self.master = master

        # Start Button
        self.button = Button(frame, text='Start', bg="#339933", height=3, width=10, command=self.start)
        self.button.pack()

        # Label
        self.operation_action_text = StringVar()
        self.operation_action_text.set("Waiting on user to click start...")
        self.operation_action = Label(frame, textvariable=self.operation_action_text)
        self.operation_action.pack()


    def start(self):
        " Change the label "

        # Do something and tell the user
        response = urllib2.urlopen('http://www.kennypyatt.com')
        json_string = response.read()
        self.operation_action_text.set("Something kinda long")
        self.frame.update_idletasks()
        time.sleep(2)

        # Do something else and tell the user
        response = urllib2.urlopen('http://www.kennypyatt.com')
        json_string = response.read()
        self.operation_action_text.set("ABCDEFGHI")
        self.frame.update_idletasks()
        time.sleep(2)

        # Do a third thing and tell the user
        response = urllib2.urlopen('http://www.kennypyatt.com')
        json_string = response.read()
        self.operation_action_text.set("FOO")
        self.frame.update_idletasks()

        return

main()
4

2 に答える 2

2
于 2012-08-19T03:53:00.050 に答える