2017-04-03 24 views
0

クリックごとにラベルのテキストを変更するpythonコードを書いた。今度は、クリックごとに新しいテキストが実際に表示されているかどうかをテストする必要があります。私はオンラインで見て、やり方を見つけることができませんでした。 Pythonとプログラミングで本当に新しい、いくつかのコードを行う簡単な方法があることを知っているが、今のところ私はその知識を持っていない。Tkinter Pythonでクリック時にラベルを変更する

import Tkinter as tk 

li="This Text Will Keep Changing Every Time You Click!".split() 

def toggle_text(): 
    """Change text after each click """ 

    if lbl["text"] == "Hi!": 
      lbl["text"] = li[0]  
    elif lbl["text"] == li[0]: 
      lbl["text"] = li[1] 
    elif lbl["text"] == li[1]: 
      lbl["text"] = li[2] 
    elif lbl["text"] == li[2]: 
      lbl["text"] = li[3]  
    elif lbl["text"] == li[3]: 
      lbl["text"] = li[4] 
    elif lbl["text"] == li[4]: 
      lbl["text"] = li[5] 
    elif lbl["text"] == li[5]: 
      lbl["text"] = li[6] 
    elif lbl["text"] == li[6]: 
      lbl["text"] = li[7] 
    elif lbl["text"] == li[7]: 
      lbl["text"] = li[8]  
    else: 
     lbl["text"] = "Hi!" 

root = tk.Tk() 
root.title("Click the Button") 
button = tk.Button(text="Click", width=12, command=toggle_text) 
button.pack(padx=100, pady=10) 
lbl = tk.Label(root, text="Hi!") 
lbl.pack() 
root.mainloop() 

コードは最高ではありませんが機能します。 forループを使用しようとしましたが、テキストが変更されていないため、回避策が見つかりました。今すぐクリックするたびに新しいテキストが表示されることをテストするにはどうすればよいですか?より良いTkinterのに対処するための

答えて

0

私はあなたがクラス内のあなたのGUI設定をお勧めします:

import Tkinter as tk 
class DynamicLabel: 

    TEXT_LIST="This Text Will Keep Changing Every Time You Click!".split() + ["Hi"] 

    def __init__(self, toplvl): 

     self.index = 0 
     self.new_text = "Hi" 
     self.old_text = "Hi" 

     self.button = tk.Button(toplvl, text="Click", width=12, command=self.toggle_text) 
     self.button.pack(padx=100, pady=10) 

     self.label = tk.Label(toplvl, text="Hi") 
     self.label.pack() 

    def toggle_text(self): 
     self.old_text = self.label['text'] 
     self.new_text = self.TEXT_LIST[self.index%len(self.TEXT_LIST)] 
     self.label['text'] = self.new_text 
     self.index += 1 
     print "Text Changed: %r" % self.check_text() 

    #This one may check if the text changed, returning True or False 
    def check_text(self): 
     return self.old_text != self.new_text 

root = tk.Tk() 
DynamicLabel(root) 
root.mainloop() 

を、ボタンがクリックされたときに検証を端末にストリーミングする必要があります。

関連する問題