2012-10-27 2 views
0

내 버튼이 두 개의 문자열 사이를 번갈아 가며 누르고 싶습니다. 예를 들어 처음 버튼을 "하이"로 레이블을 변경하고 버튼을 두 번째로 누르면 '안녕'이라고 표시되고 세 번째로 '안녕'으로 돌아갑니다. 가장 좋은 해결책은 카운터를 사용하는 것입니까?Tkinter 파이썬에서의 바인딩 2.7

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

편집

간단한 예 : : 또는

답변

1

내가 이것에 대한 itertools.cycle를 사용하는 것 (나는 정말 어떻게 작동하는지는 확실하지 메신저에 대해 들었습니다) 바인딩

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 click1 (자기)입니다. \t \t \t 셀 f.buttontext.set ("버튼") \t \t \t self.label2text StringVar =() = 라벨 \t \t \t self.label2 (self.root 텍스트 itertools.cycle = ([ 'Hi''Bye']) , 어떤 이유로 든 그 위치가 아닌 문자열을 인쇄합니다. – user1733141

+0

@ user1733141 : 전체 코드를 보지 않고도 말할 수는 없지만 사용법을 보여주기 위해 예제를 추가했습니다. – Avaris