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 :

Interdire déplacement d'une fenetre principale [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Interdire déplacement d'une fenetre principale
    Bonjour,
    Je voudrais interdire le déplacement de ma fênetre principale. Le bind avec Configure redonnant les coordonnées et les dimensions originelles ne fonctionnent pas.
    Avez vous une idée de ce qu'il est possible de faire?
    Code:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    # This Python file uses the following encoding: utf-8
    import tkinter
    from tkinter import *
    class FenUne(tkinter.Tk):
        def __init__(self,parent):
            tkinter.Tk.__init__(self,parent)
            self.parent = parent       
            self.initialize()
     
        def initialize(self):     
            w=600
            h=300
            x=200
            y=200
            self.geometry('%dx%d+%d+%d' % (w, h, x, y))
     
            self.bind("<Configure>",self.enplace)
     
        def enplace(self,parent):
            w=600
            h=300
            x=200
            y=200
            self.geometry('%dx%d+%d+%d' % (w, h, x, y))
     
    if __name__ == "__main__":
        app=FenUne(None)
        app.title('Essai blocage fenetre')
        app.mainloop()
    Merci!

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par SENILE72ANS Voir le message
    Le bind avec Configure redonnant les coordonnées et les dimensions originelles ne fonctionnent pas.
    Chez moi votre code fonctionne (et je ne vois pas de raisons pour qu'il ne marche pas)...
    Qu'est ce qui vous fait dire que çà ne fonctionne pas?

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Blocage fenêtre
    Salut,

    Le fait que si je déplace la fenêtre ou si je modifie ses dimensions avec la souris, la fenêtre ne revient pas à sa place ou à ses dimensions d'origines.
    Je suis sous Debian 8, Python 3.4.2, Tk 8.6.2 et j'emploie IDLE 3.4.2

    Merci pour le test chez vous

    jpd

  4. #4
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    J'avais le même problème dans une application terminale.
    La solution est de quitter l'application et d'en faire un restart par code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    python = sys.executable
    os.execl(python, python, *sys.argv)
    Si la réponse vous a aidé, pensez à cliquer sur +1

  5. #5
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Blocage fenêtre
    Ok, c'est effectivement le seul moyen... Merci

  6. #6
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    En utilisant grab_set chez moi ça fonctionne, mais il faut faire un release après le geometry, sinon ça ne fonctionne pas et donne un comportement assez erratique avec mon gestionnaire de fenêtre, et comme le grab_release fait perdre le focus de la fenêtre, il me faut aussi faire un focus_force, pas facile tout ça.

    Mais toujours est-il que ça replace bien la fenêtre à sa position initiale, bon le redimensionnement déconne un peu, mais si tu ne veux pas de redimensionnement, autant le spécifier à tkinter.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    # This Python file uses the following encoding: utf-8
    import tkinter
    from tkinter import *
    class FenUne(tkinter.Tk):
        def __init__(self,parent):
            tkinter.Tk.__init__(self,parent)
            self.parent = parent
            self._geomdata = (600, 300, 200, 200)
            self.geometry('%dx%d+%d+%d' % self._geomdata) 
            self.initialize()
     
        def initialize(self):
            self.bind("<Configure>", self.enplace)
     
        def enplace(self,parent):
            try :
                self.grab_set()
                self.geometry('%dx%d+%d+%d' % self._geomdata)
                self.grab_release()
                self.focus_force()
            except TclError :
                print('oups')
                pass
     
    if __name__ == "__main__":
        app=FenUne(None)
        app.title('Essai blocage fenetre')
        app.mainloop()
    À voir ce que cela donne avec votre gestionnaire de fenêtre.
    Le temps ronge l'amour comme l'acide.

  7. #7
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Blocage fenêtre
    Bonjour,
    Solution géniale, ça marche au poil avec Firefox ESR....
    Merci....

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/05/2017, 23h30
  2. Actualiser une fenetre principale en GTK
    Par pierredetlmvpsp dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 28/10/2010, 03h52
  3. Comment ouvrir un JDialog à partir d'une fenetre principale
    Par une_tite_question dans le forum Agents de placement/Fenêtres
    Réponses: 15
    Dernier message: 24/04/2008, 17h54
  4. Réponses: 5
    Dernier message: 23/04/2008, 15h41
  5. Interdire déplacement d'une fenetre
    Par ramoud dans le forum Visual C++
    Réponses: 5
    Dernier message: 18/12/2006, 16h37

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