2010-05-05 11 views
2

Je voudrais créer un LaChaine() qui ressemble à ceci:Comment puis-je inclure du texte statique dans un StringVar() et le mettre à jour avec des modifications de variables?

someText = "The Spanish Inquisition" # Here's a normal variable whose value I will change 

éventuellement

TkEquivalent = StringVar() # and here's the StringVar() 

TkEquivalent.set(string(someText)) #and here I set it equal to the normal variable. When someText changes, this variable will too... 

CEPENDANT:

TkEquivalent.set("Nobody Expects " + string(someText)) 

Si je fais cela, le LaChaine() ne sera plus mis à jour automatiquement! Comment puis-je inclure ce texte statique et avoir toujours la mise à jour StringVar() pour refléter les modifications apportées à someText?

Merci pour votre aide.

+0

Il n'y a pas de code suffisant pour donner un contexte à votre question. Devinant ce que vous essayez de demander, les variables liées à Tkinter ne seront pas mises à jour tant que la boucle principale de tk ne sera pas inactive. Si vous êtes bloqué dans le code Python, la boucle d'événements n'est pas en cours d'exécution et aucune information ne passe entre l'interface utilisateur et les variables liées. Ceci est bien décrit sur http://infohost.nmt.edu/tcc/help/pubs/tkinter/control-variables.html – msw

Répondre

4

A LaChaine ne se lie pas avec un nom de Python (ce que vous appelez une variable), mais avec un widget Tkinter, comme ceci:

a_variable= Tkinter.StringVar() 
an_entry= Tkinter.Entry(textvariable=a_variable) 

A partir de là, tout changement de a_variable par son .set méthode reflétera dans le contenu an_entry, et toute modification du contenu an_entry (par exemple par l'interface utilisateur) mettra également à jour le contenu a_variable.

Toutefois, si ce n'est pas ce que vous voulez, vous pouvez avoir deux (ou plus) les références à la même LaChaine dans votre code:

var1= var2= Tkinter.StringVar() 
var1.set("some text") 
assert var1.get() == var2.get() # they'll always be equal