2012-10-27 89 views
0

我想讓我的按鈕在兩個字符串之間交替按下它的所有東西。例如,第一次我希望按鈕將標籤更改爲「Hi」,則第二次按下該按鈕時,它會說「再見」,然後是第三次再次返回「Hi」。最好的解決方案是使用櫃檯嗎?或結合(我聽說這件事林不知道它是如何真正起作用)在Tkinter python中綁定2.7

回答

1

我會使用itertools.cycle此:

>>> import itertools 
>>> texts = itertools.cycle(['Hi', 'Bye']) 
>>> print next(texts) 
Hi 
>>> print next(texts) 
Bye 
>>> print next(texts) 
Hi 
>>> print next(texts) 
Bye 

編輯

一個簡單的例子:

import itertools 
from Tkinter import * 

class App: 

    def __init__(self, master): 

     frame = Frame(master) 
     frame.pack() 

     self.texts = itertools.cycle(['Hi', 'Bye']) 

     self.var = StringVar() 
     self.label = Label(frame, textvariable=self.var) 
     self.label.pack(side=LEFT) 

     self.button = Button(frame, text="Set Text", command=self.change_text) 
     self.button.pack(side=LEFT) 


    def change_text(self): 
     self.var.set(next(self.texts)) 

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

這是我的代碼def clicked1(self): \t \t \t sel f.buttontext.set( 「按鈕」) \t \t \t self.label2text = STRINGVAR() \t \t \t self.label2 =標籤(self.root,文本= itertools.cycle([ 'Hi''Bye']) ,#由於某種原因,它打印的位置,而不是字符串 – user1733141

+0

@ user1733141:我不能說很多沒有看到整個代碼,但我已經添加了一個示例來演示如何使用它。 – Avaris