Comment faire pour obtenir l'entrée dans le Tkinter Widget Zone de Texte?
Comment obtenir Tkinter entrée de la zone de Texte en Python 2.7.3?
MODIFIER
J'ai posé cette question à aider les autres avec le même problème que est la raison pour laquelle il n'existe aucun exemple de code. Cette question a été troublant moi pendant des heures et j'ai utilisé cette question à enseigner à d'autres. Veuillez ne pas le classer comme si c'était une vraie question, la réponse est la chose qui compte.
Vous devez vous connecter pour publier un commentaire.
Pour obtenir Tkinter entrée de la zone de texte, vous devez ajouter un peu de plus d'attributs à la normale
.get()
fonction. Si nous avons une zone de textemyText_Box
, puis c'est la méthode pour récupérer son entrée.La première partie,
"1.0"
signifie que l'entrée doit être lu à partir de la ligne de l'un, personnage à zéro (c'est à dire: le premier caractère très).END
est importé une constante qui est la chaîne de"end"
. LeEND
partie signifie à lire jusqu'à la fin de la zone de texte est atteint. Le seul problème, c'est qu'en fait, il ajoute une nouvelle ligne à notre entrée. Ainsi, afin de réparer ce qui doit changerEND
àend-1c
(Merci Bryan Oakley) Le-1c
supprime 1 caractère, tandis que-2c
impliquerait de supprimer les deux personnages, et ainsi de suite."end-1c"
ouEND+"1c"
, sinon vous obtiendrez la nouvelle ligne de plus que le widget texte ajoute toujours.-1c/1c
signifie "supprimer un saut de ligne?" Aussi, peut-il être utilisé dans d'autres domaines que le widget text/Tkinter?'1.0'
est la ligne 1 de la colonne 0, c'est à dire le premier caractère. Je suis d'accord avec Bryan, utilisez'end-1c'
. C'est OK pour modifier et améliorer la réponse basée sur les suggestions dans les commentaires.END -2c
serait que supprimer les 2 personnages?0.1
serait d'obtenir tout ce à partir de la deuxième colonne à partir de (en supposant que j'ai utilisé par la suite.) Aussi, sommes-nous autorisés à utiliser des lettres minuscules dansEND
, je l'avais toujours supposé que les capitaux ont été nécessaires.END
est importé, le nom qui est l'équivalent de la chaîne'end'
. Ainsi, vous pouvez utiliser la chaîne de caractères'end'
directement..get('1.0', 'end-1c')
end+1c
ferait qu'ajouter une nouvelle ligne dans le code? Enfin, Bryan et Honnête Abe, vous remercier beaucoup pour m'avoir aidé avec mon simple Tkinter et Python questions. Vous avez vraiment m'a aidé à acquérir une compréhension plus profonde de la langue, et ont toujours été courtois, rapide, et le meilleur de tous - knowlegable. Je suis sûr que vos conseils vont m'aider pour que je me déplace à l'école secondaire et au-delà!'end-1c'
sont nécessaires pour être en une seule chaîne.'end'
est un alias pour l'index après le dernier caractère. Donc, si'end'
était'3.8'
puis'end-1c'
serait'3.7'
. Je veux encore une fois vous recommandons de consulter: Texte du widget indices.TclError: bad text index "END-1c"
END+"-1c"
au lieu deEND+"1c"
text = Tkinter.Text(root, width=100, height=50)
, mais quand je n'aifile_input = text.get("1.0", "end-1c")
, j'ai obtenu l'erreurTclError: invalid command name ".3038449376L"
Ce que je fais mal?Voici comment je l'ai fait avec python 3.5.2:
quand j'ai tapé "bla bla" dans le widget texte et appuyé sur le bouton, ce que j'ai tapé se sont imprimées. Donc, je pense que c'est la réponse de l'utilisateur de stockage d'entrée de Texte widget de variable.
Pour obtenir Tkinter entrée de la zone de texte en python 3 le complet niveau d'étudiant du programme utilisé par moi, est la suivante:
Afin d'obtenir la chaîne de caractères dans une
Text
widget on peut simplement utiliserget
méthode définie pourText
qui accepte de 1 à 2 argumentsstart
etend
positions de caractères,text_widget_object.get(start, end=None)
. Si seulementstart
est passé etend
n'est pas passé, il ne retourne que le caractère unique positionné àstart
, siend
est passé ainsi, elle retourne tous les caractères entre les positionsstart
etend
comme une chaîne de caractères.Il existe également des chaînes, qui sont variables à la sous-jacentes des Savoirs traditionnels. L'un d'eux serait
"end"
outk.END
qui représente la position de la variable de la dernière char dans laText
widget. Un exemple serait de retour tout le texte dans le widget, avectext_widget_object.get('1.0', 'end')
outext_widget_object.get('1.0', 'end-1c')
si vous ne voulez pas le dernier caractère de saut de ligne.Démo
Voir ci-dessous la démonstration que sélectionne les personnages de l'entre-compte tenu des positions de curseurs:
Je pense que c'est une meilleure façon-
En appuyant sur le bouton, la valeur dans le champ de texte serait imprimée.
Mais assurez-vous que Vous importez le ttk séparément.
La code complet pour un demande de base est-
Permet de dire que vous avez un
Text
widget appelémy_text_widget
.À obtenir entrée de la
my_text_widget
vous pouvez utiliser leget
fonction.Supposons que vous avez importé
tkinter
.Permet de définir
my_text_widget
tout d'abord, permet de faire un simple widget de texte.À obtenir d'entrée à partir d'un
text
widget, vous devez utiliser leget
fonction, à la fois,text
etentry
widgets ont cette.La raison pour laquelle nous l'enregistrer dans une variable est de l'utiliser dans la poursuite du processus, par exemple, le test pour ce qui est de l'entrée.