Tkinter: empêcher la sortie d'écran
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Tkinter: empêcher la sortie d'écran



  1. #1
    ketchup.sauce.tomate

    Tkinter: empêcher la sortie d'écran


    ------

    Bonjour,
    Je code en Python avec Spyder, sous Windows.
    J'utilise la bibliothèque Tkinter, et j'aimerai empêcher l'utilisateur de faire sortir la fenêtre de l'écran...
    Pouvez-vous m'aider ?

    Merci d'avance

    -----

  2. #2
    fred1599

    Re : Tkinter: empêcher la sortie d'écran

    Les méthodes winfo_x et winfo_y des widgets permettent de connaître leurs coordonnées (à partir du côté gauche et haut du widget), ainsi que winfo_width (largeur widget) et winfo_height (hauteur widget) plus un petit calcul pour éviter les sorties du widgets sur la droite de l'écran.

    Bonne continuation...

  3. #3
    ketchup.sauce.tomate

    Re : Tkinter: empêcher la sortie d'écran

    Merci pour votre aide
    Après quelque recherche basé sur vos fonctions, j'ai crée cette fonction: (avec fenetre.geometry() qui renvoie 'lxhxX+Y' avec l,h,X,Y les paramètres caractéristiques de ma fenêtre dont vous avez parlez, et donc j'ai créer la fonction geoliste() qui me renvoie [l,h,x,y] lorsque je l'applique à fenetre.geometry())


    def no_sortie():
    global fenetre
    ecranW=fenetre.winfo_screenwid th()
    ecranH=fenetre.winfo_screenhei ght()
    l,h,x,y=geoliste(fenetre.geome try())
    if x<0:
    fenetre.geometry('%dx%d+%d+%d' %(l, h, 0,y)) #On met la fenêtre a x=0
    x=0
    if x>ecranW:
    fenetre.geometry('%dx%d+%d+%d' %(l, h, ecranH,y)) #On met la fenêtre a x=ecranH
    x=ecranH
    if y<0:
    fenetre.geometry('%dx%d+%d+%d' %(l, h, x,0)) #on met la fenêtre a y=0
    y=0
    if y>ecranH:
    fenetre.geometry('%dx%d+%d+%d' %(l, h, x,ecranH)) #on met la fenêtre a y=ecranH
    y=ecranH

    Je ne sais pas si ça peux fonctionner... mais le problème et que je ne sais pas comment faire pour que ma fonction s'applique dès qu'il y a mouvement de la fenêtre (là fenêtre n'envoie pas de message lorsqu'il y a mouvement ? Comment faire que le mouvement de la fenêtre déclenche la fonction no_sortie() ?)

    Merci

  4. #4
    fred1599

    Re : Tkinter: empêcher la sortie d'écran

    Vous avez toutes les informations, si je le fais chez moi

    Code:
    >>> from tkinter import *
    >>> root = Tk()
    >>> root.winfo_x()
    57 # emplacement en x (côté gauche de la fenêtre)
    >>> root.winfo_y()
    282 # emplacement en y (haut de la fenêtre)
    >>> root.winfo_width()
    200 # largeur de la fenêtre
    >>> root.winfo_height()
    200 # hauteur de la fenêtre
    >>> root.winfo_screenwidth()
    1366 # largeur écran
    >>> root.winfo_screenheight()
    768 # hauteur de l'écran
    Avec des petites opérations mathématiques et ces informations, il est facile de créer des délimitations...

    Par exemple pour être au bord à gauche, il faut vérifier ceci

    Code:
    x = root.winfo_x()
    if x < 0: # dépassement gauche de la fenêtre
        root.geometry('{0}x{1}-{2}+{3}'.format(w, h, ws-w, y)
    w -> root.winfo_width()
    h -> root.winfo_height()
    ws -> root.winfo_screenwidth()
    y -> root.winfo_y()

    Le problème sera la détection du mouvement de ta fenêtre (comme tu le dis), il va falloir que tu détectes la position de la souris, puis vérifier si oui ou non la fenêtre sort de l'écran, ça doit être faisable je pense...

  5. A voir en vidéo sur Futura

Discussions similaires

  1. python, tkinter, gestion d'événements
    Par Jack dans le forum Programmation et langages, Algorithmique
    Réponses: 11
    Dernier message: 29/10/2013, 11h34
  2. Python : pas moyen d'importer tkinter
    Par helium0xFF dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/09/2012, 13h26
  3. [Brun] sortie son ecran plat
    Par mars2285 dans le forum Dépannage
    Réponses: 12
    Dernier message: 14/03/2010, 15h06
  4. Sortie écran
    Par invitec77ca1ec dans le forum Électronique
    Réponses: 2
    Dernier message: 16/10/2005, 20h36
  5. sortie télé et ecran plat
    Par inviteb440509a dans le forum Électronique
    Réponses: 1
    Dernier message: 01/11/2003, 15h08