IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Redimensionner un widget Text()


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut Redimensionner un widget Text()
    Salut les pythons Tkinter,
    Je désire pouvoir redimensionner mon interface entière et j'ai fait plusieurs essaies et dans mon application tout se base sur la taille d'un widget Text() car si je mets une taille différente, la fenêtres est redimensionner car cela est autoriser par mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import Tkinter as tk 
    a=tk.Tk()
    a.resizable(width=True, height=True)
    Et j'aimerai que l'utilisateur puisse appuyer sur le bouton de redimensionnement et avoir l'apllication en plein écran, le retour étant programmer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a.minsize(width=1024-32,height=640)
    Tous repose sur la taille du widget Text() de mon application qu'il faudrait que je puisse redimensionner, ce qui redimensionnerai tout mon interface (je ne sais pourquoi), seulement je ne trouve pas le moyens et il me reste la solution des events dont je ne connais pas grand choses, car il n'existe pas de méthode du widget Text() pour le redimensionner:
    Alors y a-t-il un event qui est déclencher quand l'utilisateur redimensionne la fenêtre ?
    Je sais que je vais de voir calculer la taille par rapport a la taille de la police et la taille de l'écran.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    b=tk.Text(a,font=("Monospace",12,"normal"))
    b.configure({"width":a.winfo_screenwidth()/12)}) #la largeur est a donner en caractères pas en pixels
    b.configure({"heigth":a.winfo_screenheight()/(12*2)}) #la hauteur est a donner en caractères pas en pixels
    bref il faut que je reconfigure la taille du widget Text() en répondant a un event que je ne connait pas...

    Merci de bien vouloir me donner vos lumières sur si il existe un event pour cela.
    J'attends vos réponses éclairés avec impatience.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,
    La toplevel (votre "a") peut être redimensionné par défaut.
    La propagation des nouvelles dimensions aux widgets que contient la toplevel peut être faite automatiquement par le geometry manager:
    • .pack(fill='both', expand=True, ...
    • .grid(sticky="nwse',..
    • ...

    Faire cela à partir de l'event "<Configure>" est plus compliqué.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut
    Le problème est que j'ai vraiment tout essayer (tous les bidouillages possibles ) avant de poster et le problème vient du fait que la taille du widget Text() est a donner en caractères et qu'il n'existe aucune méthode prévue pour le redimensionnement,
    je pense que comme la taille est fixer fixement en donnant la largeur et la hauteur en nombres de caractères celle-ci ne peut être dynamiquement changé...
    Merci pour la réponse.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,
    Je ne comprends pas pourquoi vous ne laissez pas le "geometry manager" bosser pour vous! Il n'y a pas de code à écrire, juste essayer de mettre en œuvre ce qui existe. La base n'est pas compliquée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> import tkinter as tk
    >>> root = tk.Tk()
    >>> text = tk.Text()
    >>> text.pack(fill='both', expand=1)
    >>> text.insert('end', "ls lksjd lkljsd lkjsd lkjd lskjd lkdjs")
    >>> tk.mainloop()
    A partir de là, amusez vous à redimensionner la root window de Tk. Le widget Text occupera toujours toute la root window. Par défaut, il affichera le texte sur plusieurs lignes si le "width" de la toplevel est trop petit pour afficher toute la ligne.

    Pourquoi ces fonctionnalités de base ne vous suffisent pas?
    Quelles sont les fonctionnalités supplémentaires que vous voulez avoir?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut
    Effectivement la seule manière de redimensionner le widget Text() pour un agrandissement est ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text.pack(fill='both', expand=1)
    Et je n'utilise pas ce "geometry manager" mais plûtot grid() avec lequel j'ai tout essayer en vain, et j'ai finis par rendre la fenêtre non redimensionnable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a.maxsize(width=1024-32,height=640)
    a.resizable(width=False,height=False)
    Le but était de progresser avec Tkinter dans le but de pouvoir concevoir des interfaces graphiques redimensionnables mais je ne trouve la méthode pack() pas a mon goût et j'ai l'habitude d'utiliser grid() comme j'ai déjà dit.
    Cependant je pense qu'il existe peut être une manœuvre avec un event bind a un configure pour le redimensionnement d'un widget Text() comme évoquer ci dessous.
    Inutile de resignaler que le widget Text() a une taille fixement définis en largeurs par caractères et en hauteur par lignes en fonction de la taille de la font.

    PS: Super l'ajout de ttk dans python 2.7 !!!

    Merci pour la réponse qui est une résolution du problème mais pas comme je voyait la chose.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Luke spywoker Voir le message
    Effectivement la seule manière de redimensionner le widget Text() pour un agrandissement est ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text.pack(fill='both', expand=1)
    Ce n'est pas la seule mais la plus facile à mettre en œuvre.
    Vous devriez pouvoir faire la même chose avec .grid.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/05/2012, 09h24
  2. colorier une colonne dans un widget text
    Par Chris33 dans le forum Tkinter
    Réponses: 4
    Dernier message: 14/09/2006, 11h20
  3. [tkinter] widget text et scrollbar
    Par jojolapine dans le forum Tkinter
    Réponses: 3
    Dernier message: 29/04/2006, 15h58
  4. [Tkinter] widget Text
    Par t_om84 dans le forum Tkinter
    Réponses: 8
    Dernier message: 17/06/2005, 09h30
  5. [SWT][Layout]problème de redimensionnement d'un Text
    Par McFoggy dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 05/08/2004, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo