Comment connecter une variable à l'Entrée widget?
Je suis en train d'essayer d'associer une variable Tkinter widget de saisie, de manière à:
- Chaque fois que je change la valeur (le "contenu") de l'entrée, principalement en tapant quelque chose en elle, la variable est automatiquement affectée de la valeur de ce que j'ai tapé. Sans moi, avoir à appuyer sur un bouton "mise à Jour de la valeur" ou quelque chose comme ça en premier.
- Chaque fois que la variable est modifiée (par une autre partie du programme), je veux que la valeur de l'entrée affichée être ajustée automatiquement. Je crois que cela pourrait fonctionner via la textvariable.
J'ai lu l'exemple sur http://effbot.org/tkinterbook/entry.htm, mais il n'est pas exactement de m'aider pour ce que j'ai à l'esprit. J'ai le sentiment qu'il y a un moyen de s'assurer la première condition à l'utilisation de l'entrée du "valider". Des idées?
Vous pourriez peut-être proposer une alternative? 🙂
Quel est le problème avec tkinter? Selon le python page d'accueil, il est "...Python standard de facto package GUI." Et le "le plus couramment utilisé."
Variables de contrôle: infohost.nmt.edu/tcc/help/pubs/tkinter/control-variables.html
Quand vous dites "variable", voulez-vous dire une variable python comme un
stackoverflow.com/questions/520015 contient l'analyse de kits graphiques en Python, ce qui serait un bon endroit pour discuter des mérites relatifs de ces. Il n'existe pas de plaider Tkinter (et un gars vraiment dissing), ce qui n'est pas surprenant pour moi; les Savoirs traditionnels de la hanche dans les années 90 lorsqu'il a été ajouté à Python, mais c'est un peu perdu de sa superbe. Il peut regarder bien sur Windows, mais je n'ai jamais vu un Python Tkinter application qui n'était pas hideux sur Linux. Notamment manquant dans le thread, j'ai lié est PyGTK pygtk.org – ces liaisons sont matures et GTK+ est un bon cadre de travail.
Quel est le problème avec tkinter? Selon le python page d'accueil, il est "...Python standard de facto package GUI." Et le "le plus couramment utilisé."
Variables de contrôle: infohost.nmt.edu/tcc/help/pubs/tkinter/control-variables.html
Quand vous dites "variable", voulez-vous dire une variable python comme un
int
ou un str
ou une variable Tkinter comme IntVar
ou StringVar
?stackoverflow.com/questions/520015 contient l'analyse de kits graphiques en Python, ce qui serait un bon endroit pour discuter des mérites relatifs de ces. Il n'existe pas de plaider Tkinter (et un gars vraiment dissing), ce qui n'est pas surprenant pour moi; les Savoirs traditionnels de la hanche dans les années 90 lorsqu'il a été ajouté à Python, mais c'est un peu perdu de sa superbe. Il peut regarder bien sur Windows, mais je n'ai jamais vu un Python Tkinter application qui n'était pas hideux sur Linux. Notamment manquant dans le thread, j'ai lié est PyGTK pygtk.org – ces liaisons sont matures et GTK+ est un bon cadre de travail.
OriginalL'auteur Sano98 | 2010-03-26
Vous devez vous connecter pour publier un commentaire.
Je pense que vous voulez quelque chose de ce genre. Dans l'exemple ci-dessous, j'ai créé une variable
myvar
et il a attribué àtextvariable
à la fois d'unLabel
etEntry
widgets. De cette façon, les deux sont couplés et des changements dans le widget Entry reflètent automatiquement dans l'Étiquette.Vous pouvez également set de trace sur les variables, par exemple, pour écrire sur la sortie standard stdout.
Pour ce faire:
text_entry.bind('<Key>', handler)
oùhandler
est une fonction qui assigne à votre variable python. Voir ma réponse.j'ai édité réponse, vous pouvez facilement la trace des variables lecture/écriture
Merci, j'ai utilisé votre proposition après j'ai rencontré des problèmes décrits par Brian Oakley lors de l'essayer avec la liaison à keyppress comme bpowah suggéré. Après une petite étude, je vois maintenant que le suivi semble taylormade pour un problème de ce genre. Mais lors de l'utilisation de IntVar au lieu de StringVar, un ValueError se produit lorsque vous supprimez complètement le contenu de l'entrée - le vide littérale "" n'est pas valable pour les int de conversion. On lui donne la valeur 0, ce qui est ce que j'attendais, mais est-il un moyen pour éviter l'erreur? Ou de l'attraper, en quelque sorte?
vous pouvez soit modifier le mondial getint défini dans tkinter, ou mieux dériver une classe à partir de IntVar pour annuler obtenir, ou peut-être il ya de meilleures façons, vous pouvez poser une autre question
OriginalL'auteur Anurag Uniyal