J'ai remarqué que l'argument de la largeur pour le widget Texte de Tkinter est en caractères.
Est-il possible de définir une largeur maximale en caractères pour le widget texte ?
J'ai remarqué que l'argument de la largeur pour le widget Texte de Tkinter est en caractères.
Est-il possible de définir une largeur maximale en caractères pour le widget texte ?
Ce que vous voulez faire n'est pas directement pris en charge par le widget. Vous pouvez presque y arriver en utilisant quelques astuces. Par exemple, vous pouvez définir le paramètre wrap
pour envelopper les mots ou les caractères, assurez-vous que la largeur du widget ne dépasse jamais 80 caractères (il faut pour cela utiliser les options pack/grid/place de manière appropriée).
Cette technique fonctionne bien pour les polices à largeur fixe, mais pour les polices à largeur variable, elle ne se termine pas toujours par 80 caractères. En effet, lorsque vous définissez la largeur à 80 caractères, il s'agit en fait d'une largeur de pixel spécifique basée sur 80 fois la largeur d'un caractère moyen (plus précisément, le caractère 0 (zéro), la dernière fois que j'ai vérifié).
Bien sûr, vous pouvez toujours l'obliger à se limiter à 80 caractères en contrôlant les insertions et les suppressions de texte et en gérant vous-même le bouclage, mais cela représente généralement plus de travail qu'il n'en vaut la peine.
Vous pouvez le faire en vous liant à l Key
, KeyPress
ou KeyRelease
événements. Mais toutes les implémentations que j'ai vues à ce sujet sont bancales. Si vous pouvez vous en sortir en utilisant un Entry
au lieu d'un Text
Jetez un coup d'œil à un Widget de validation d'entrée .
Il semble assez simple à utiliser (je n'ai pas inclus l'option ValidatingEntry
y MaxLengthEntry
pour des raisons de brièveté) :
from Tkinter import *
root = Tk()
entry = MaxLengthEntry(root, maxlength=10)
entry.pack(side=LEFT)
root.mainloop()
La question est un peu floue pour moi.
Si vous voulez définir la largeur de la zone de texte. Vous pouvez alors définir la largeur lorsque vous instaurez la classe Text. La largeur est exprimée en caractères par défaut. La largeur réelle en pixels est déterminée par la police par défaut du widget de texte. Notez que si les caractères dépassent les limites de la boîte, le texte sera mis en page dès que la largeur de chaque caractère sera atteinte.
chars = 5 # 5 characters wide
Text(parent, width = chars, font = ('Helvetica, 24'))
# change the font family and size to get different sized text boxes
Vous pouvez également redéfinir la largeur des widgets de texte après leur création :
textWidget.configure(width = 5)
Si vous voulez limiter la saisie dans le widget texte. J'ai écrit une solution sur un autre fil pour cela.
Lisez ma réponse ici
Comme indiqué dans les commentaires, il existe d'autres widgets qui peuvent également s'acquitter de cette tâche. Le widget d'entrée est l'un d'entre eux.
Si cela vous a été utile, veuillez voter pour la version supérieure. Si vous avez des commentaires sur la façon dont je peux communiquer plus clairement, je vous en serais reconnaissant.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.