我编写了一个python代码,用于在每次单击后更改标签文本。现在我必须编写一个测试来确认每次点击后确实显示新文本。我环顾四周,无法找到办法。对于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循环,但文本没有改变,所以我找到了一个解决方法。现在,如何测试每次点击后是否显示新文本?
答案 0 :(得分:0)
为了更好地处理Tkinter,我建议您在一个类中设置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()
单击按钮时,验证应流式传输到终端。