3 votes

Comment définir la largeur maximale en caractères du 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 ?

3voto

Bryan Oakley Points 63365

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.

1voto

Bryan Points 2341

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()

0voto

Valthalin Points 231

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

comment limiter la longueur d'un widget texte tkinter en python en bloquant le dernier caractère saisi ?

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.com

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.

Powered by:

X