Comment effacer tout ce qui est de la tkinter widget de texte?
Je travaille sur une interface graphique pour certains programme de chat. Pour la saisie de l'utilisateur, j'ai Text() du widget, des messages sont envoyés par l'intermédiaire de "Retour" et après cela, j'ai nettoyer le Texte(). Mais aussi dur que j'ai essayé je ne peux pas supprimer le dernier "\n" qui, bouton de Retour crée.
Voici mon code pour cette partie:
def Send(Event):
MSG_to_send=Tex2.get("1.0",END)
client.send(MSG_to_send)
Tex2.delete("1.0",END)
hâte d'offres)
OriginalL'auteur Andrey | 2011-03-16
Vous devez vous connecter pour publier un commentaire.
Plus probable que votre problème est que votre liaison qui se passe avant la nouvelle ligne est insérée. Vous supprimez tout, mais alors le retour à la ligne est insérée. Cela est dû à la nature de la façon dont le texte widget fonctionne -- widget liaisons arriver avant la classe des liaisons, et la classe des liaisons sont où la saisie de l'utilisateur est réellement inséré dans le widget.
La solution est de nature à régler vos fixations pour arriver après la classe des liaisons (par exemple, en se liant à
<KeyRelease>
ou le réglage de la bindtags). Sans voir la façon dont vous faites la liaison, cependant, il est impossible pour moi de dire que c'est votre problème.Un autre problème est que lorsque vous obtenez le texte (avec
Tex2.get("1.0",END)
), vous êtes peut-être obtenir plus de texte que vous attendez. Le tkinter widget de texte garantit qu'il existe toujours un saut de ligne après le dernier caractère dans le widget. Pour obtenir exactement ce que l'utilisateur a entré sans cette ligne, l'utilisationTex2.get("1.0","end-1c")
. En option, vous pouvez bande de fuite d'espaces de ce qui est dans le widget texte avant de l'envoyer au client.OriginalL'auteur Bryan Oakley
Avec une chaîne, vous pouvez supprimer le dernier caractère avec:
Vous pouvez également supprimer tous les espaces de la fin de la chaîne (y compris les retours à la ligne) avec:
OK. Après la lecture de votre commentaire, je pense que vous devriez vérifier cette page: Le Tkinter Widget Texte
où il est expliqué:
"Si vous insérez ou supprimez le texte avant une marque, la marque est déplacé le long avec le reste du texte. Pour supprimer une marque, vous devez utiliser le *mark_unset* méthode. Suppression de texte autour d'une marque ne supprime pas la marque elle-même."
----EDIT----
Mon erreur, ignorer le paragraphe ci-dessus. Les marques n'ont rien à voir avec le saut de ligne. Comme Bryan explique dans sa réponse: La tkinter widget de texte garantit qu'il existe toujours un saut de ligne après le dernier caractère dans le widget.
Merci pour votre temps)
Ce n'adresse pas le problème de la suppression de la nouvelle ligne de plus dans le widget texte...
Vous avez raison, les marques n'ont rien à voir avec le caractère de saut de ligne comme vous l'expliquez dans votre réponse.
OriginalL'auteur ypercubeᵀᴹ