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

Python Discussion :

Appeler fonction quand taille fenêtre modifier TKINTER


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Apprenti dev Python
    Inscrit en
    Août 2021
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti dev Python

    Informations forums :
    Inscription : Août 2021
    Messages : 69
    Par défaut Appeler fonction quand taille fenêtre modifier TKINTER
    Bonjour,

    Je voudrais savoir comment faire pour appeler une fonction dès qu'un utilisateur modifie la taille de la fenêtre (Mon but final étant d'afficher (entres autres) un texte à TailleFenetreX - ... et à Taille FenetreY - ... par exemple

    PS: et savoir comment mettre une fenêtre en plein écran tout en conservant les boutons de contrôle et le titre de la fenêtreNom : Screenshot_1.png
Affichages : 313
Taille : 1,6 Ko

    Dymon

  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 modification des dimensions d'une fenêtre génère l'évènement Configure.
    Sous Windows une fenêtre passe en plein écran avec .attributes('-fullscreeen', True).

    Informations qui se trouvent assez rapidement sur Internet avec des exemples...

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

  3. #3
    Membre confirmé
    Homme Profil pro
    Apprenti dev Python
    Inscrit en
    Août 2021
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti dev Python

    Informations forums :
    Inscription : Août 2021
    Messages : 69
    Par défaut
    Merci pour l'évènement configure mais la fonction .attributes('-fullscreeen', True) ne permet pas de modifier manuellement la taille de la fenêtre
    Je voudrais que le "plein écran" fasse comme ça: Nom : Screenshot_2.png
Affichages : 195
Taille : 12,7 Ko

    Dymon

  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
    Citation Envoyé par dymon2021 Voir le message
    mais la fonction .attributes('-fullscreeen', True) ne permet pas de modifier manuellement la taille de la fenêtre
    Je ne sais pas trop ce que vous entendez par "manuellement": l’icône "passer en plein écran" en haut à droite qui le fait déjà...

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

  5. #5
    Membre confirmé
    Homme Profil pro
    Apprenti dev Python
    Inscrit en
    Août 2021
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti dev Python

    Informations forums :
    Inscription : Août 2021
    Messages : 69
    Par défaut
    Par manuellement j'entends modifier avec les flèches Nom : Screenshot_3.png
Affichages : 191
Taille : 6,9 Ko

    Dymon

  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 dymon2021 Voir le message
    Par manuellement j'entends modifier avec les flèches
    Avec les flèches, l'utilisateur fait ce qu'il veut. Et si vous voulez qu'arrivé à une certaine dimension ça passe en "fullscreen", il suffit de le coder.

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

  7. #7
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 219
    Par défaut
    Hello,
    Citation Envoyé par dymon2021 Voir le message
    PS: et savoir comment mettre une fenêtre en plein écran tout en conservant les boutons de contrôle et le titre de la fenêtreNom : Screenshot_1.png
Affichages : 313
Taille : 1,6 Ko

    Dymon
    Pour mettre une fenêtre en taille maximale avec la barre de titre au lieu de faire un fenetre.attributes("-fullscreen",True) faire un fenetre.state('zoomed')

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from tkinter import *
     
    fenetre = Tk()
    largeurFenetre = 300
    hauteurFenetre = 300
    fenetre.state('zoomed')
    fenetre.mainloop()
    Pour le souci d' Hominidé, le problème vient du fait que lorsque tu redimensionnes le canvas à la taille de la fenêtre cela redimensionne la fenêtre à une taille différente (car le canvas est alors trop grand) ce qui engendre un bouclage infernal.Il faut redimensionner le canvas par rapport à sa taille initiale ( - 4 pixels par rapport à la fenêtre root voir pourquoi ci-dessous).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print('root : ',root.winfo_width(),'x',root.winfo_height())
    print('canvas : ',can['width'],'x',can['height'])
    donne :
    root : 477 x 335
    canvas : 473 x 331
    ce code qui redimensionne à la fois la largeur et la hauteur fonctionne chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import tkinter as tk
    root = tk.Tk()
     
    def callback(evt):
            print(evt.width,'x',evt.height)
            can['width'],can['height'] = evt.width-4,evt.height-4
     
    can = tk.Canvas(root, bg="black")
    can.grid()
    #can.pack(fill="both", expand=True)
    can.create_text(200, 200, text="YOP", font=("helvetica", 40), fill="red")
    root.bind("<Configure>", callback)
    root.update()
    print('root : ',root.winfo_width(),'x',root.winfo_height())
    print('canvas : ',can['width'],'x',can['height'])
    root.mainloop()
    D'autre part pour Pourquoi ne redimensionnes-tu pas le canvas automatiquement par un can.pack(fill="both", expand=True) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import tkinter as tk
    root = tk.Tk()
     
    can = tk.Canvas(root, bg="black")
    can.grid()
    can.pack(fill="both", expand=True)
    can.create_text(200, 200, text="YOP", font=("helvetica", 40), fill="red")
    root.update()
    print('root : ',root.winfo_width(),'x',root.winfo_height())
    print('canvas : ',can['width'],'x',can['height'])
    root.mainloop()
    Ami calmant, J.P

  8. #8
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    Citation Envoyé par Jurassic Pork
    Pour le souci d' Hominidé, le problème vient du fait que lorsque tu redimensionnes le canvas à la taille de la fenêtre cela redimensionne la fenêtre à une taille différente (car le canvas est alors trop grand) ce qui engendre un bouclage infernal.Il faut redimensionner le canvas par rapport à sa taille initiale ( - 4 pixels par rapport à la fenêtre root voir pourquoi ci-dessous).
    Ah oui, j'aurai pu y pensé
    Merci

    Pour ce qui est de pack(), je ne l'utilise jamais ayant pris mes habitudes avec grid(). Et puis, ce code c'était pour illustrer la réponse de @wiztricks au PO, au cas où le PO n'aie pas l'expérience suffisante avec tkinter pour la mettre en oeuvre... et je me suis retrouvé avec ce souci^^

    édit: @Jurassic Pork je viens de tester ton code, il ne marche pas... Il me semble bien que j'avais essayé un truc du genre.Je viens de me réveiller et j'ai répondu avant mon premier café . Chose à ne jamais faire^^ . Je n'avais même pas vu les autre réponses... que je vais regarder après mon 2eme café ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appeler un fonction de la fenêtre parente
    Par joKED dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/04/2007, 14h50
  2. popup et appel fonction dans fentre parent
    Par wehtam dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/11/2006, 16h25
  3. Appel fonction quand curseur relaché
    Par Invité dans le forum Tkinter
    Réponses: 3
    Dernier message: 01/06/2006, 09h51
  4. Réponses: 7
    Dernier message: 12/03/2006, 21h18
  5. [Javascript] Appeler une fonction d'une fenêtre parente
    Par TekP@f dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 26/08/2005, 11h33

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