2012-10-27 6 views
0

Je veux mon bouton pour alterner entre deux chaînes tout son pressé. Par exemple la première fois que je veux que le bouton change l'étiquette à "Hi" puis la deuxième fois que vous appuyez sur le bouton, il dit "bye" puis la troisième fois il revient à "Hi". La meilleure solution serait-elle d'utiliser un compteur? ou la liaison (je l'ai entendu parler je ne suis pas sûr de savoir comment cela fonctionne vraiment)liaison dans Tkinter python 2.7

Répondre

1

j'utiliser itertools.cycle pour cela:?

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

Modifier

Un exemple simple:

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

ceci est mon code def clicked1 (auto): \t \t \t sel f.buttontext.set ("Button") \t \t \t self.label2text = LaChaine() \t \t \t self.label2 = Étiquette (self.root, text = itertools.cycle ([ 'Hi''Bye']) , #pour quelque raison que ce soit l'impression de l'emplacement et non la chaîne – user1733141

+0

@ user1733141: Je ne peux pas dire grand-chose sans voir le code entier mais j'ai ajouté un exemple pour montrer comment vous pouvez l'utiliser. – Avaris