これは非常に単純な 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()