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 :

Positionnement des frames à l'écran


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut Positionnement des frames à l'écran
    Bonjour,

    j'ai réalisé un programme qui enchaine des frames TkInter contenant divers Widgets qui fonctionne bien, sauf pour un point :
    les fenêtres qui s'enchainent à l'écran semblent se positionner aléatoirement, ce que je trouve un peu gênant...

    Ma question est donc :
    Existe-t'il un moyen pour dire à Windows où il doit placer mes fenêtres ?

    Merci

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Difficile sans un minimum de code

    @+

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut
    Je veux bien mettre mon code, mais ça dépasse le millier de lignes...

    Je mets un extrait, juste la 1ère fenêtre créée


    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
    30
     
    class Starting_window(Tkinter.Tk):	#First instruction window
    	def __init__(self,parent):
    		Tkinter.Tk.__init__(self,parent)
    		self.parent = parent
    		self.initialize()
    		self.geometry("350x270")
     
    	def initialize(self):
    		self.grid()
    		texte = Tkinter.Label(self, text=input_text, fg="white",bg="blue")
    		texte.pack(side=Tkinter.TOP)
    		texte.grid(column=0,row=0,sticky='N')
    		button_continue = Tkinter.Button(self,text=u"Continue",
    										command=self.OnButtonClickContinue)
    		button_continue.grid(column=0,row=5,sticky='W')
    		button_kill = Tkinter.Button(self,text=u"Quit",
    										command=self.OnButtonClickKill)
    		button_kill.grid(column=0,row=5,sticky='E')
    		self.resizable(False,False)
     
    	def OnButtonClickContinue(self):
    		input_values.completion = 1
    		self.destroy()
    		app = First_Variable_Choice(None)
    		app.title('DetectorCL - Testing Tool')
     
    	def OnButtonClickKill(self):
    		input_values.completion = 0
    		self.destroy()
    Et c'est appelé de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	app = Starting_window(None)
    	app.title('DetectorCL - Testing Tool')
    	app.mainloop()

  4. #4
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut
    Je crois que j'ai trouvé

    Si je modifie le début de mon code ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Starting_window(Tkinter.Tk):	#First instruction window
    	def __init__(self,parent):
    		Tkinter.Tk.__init__(self,parent)
    		self.parent = parent
    		self.initialize()
    		self.geometry("350x270-5+5")
    9a devrait placer la fenêtre à 5 pixels du bord gauche de l'écran et à 5 pixels du bord supérieur, c'est ça ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 9
    Par défaut
    Bonjour,

    personnellement j utilise apres l'ouverture de la fenetre tk en 750 x 280 centré dans l ecran (windows manager) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Starting_window.geometry("%dx%d+%d+%d" %(750,280,(Starting_window.winfo_screenwidth()-750)/2,(Starting_window.winfo_screenheight()-280)/2))
    Starting_window.resizable(width=False, height=False)
    par contre je ne sais pas l utiliser dans la class (a mon avis c est apres le self.geometry de ton code)

  6. #6
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		self.grid()
    		texte = Tkinter.Label(self, text=input_text, fg="white",bg="blue")
    		texte.pack(side=Tkinter.TOP)
    		texte.grid(column=0,row=0,sticky='N')
    Vous devez utiliser le même géométry manager (pack, grid ou place) pour un même niveau de Widget. Sinon cela plante...

    Outre cela vous parlez d'utilisation de Frame et les fenêtres qui s'enchainent à l'écran semblent se positionner aléatoirement: Comment passez vous d'une fenêtre à l'autre ? Une exemple/explication ? Par position vous parlez de la position de la fenêtre ? C'est quoi comme 'fenêtre', des Toplevel ? Je pense qu'il y a aussi souci de ce coté là.

    @+

  7. #7
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		self.grid()
    		texte = Tkinter.Label(self, text=input_text, fg="white",bg="blue")
    		texte.pack(side=Tkinter.TOP)
    		texte.grid(column=0,row=0,sticky='N')
    Vous devez utiliser le même géométry manager (pack, grid ou place) pour un même niveau de Widget. Sinon cela plante...

    Outre cela vous parlez d'utilisation de Frame et les fenêtres qui s'enchainent à l'écran semblent se positionner aléatoirement: Comment passez vous d'une fenêtre à l'autre ? Une exemple/explication ? Par position vous parlez de la position de la fenêtre ? C'est quoi comme 'fenêtre', des Toplevel ? Je pense qu'il y a aussi souci de ce coté là.

    @+

    Effectivement, c'est bizarre que ça plante pas comme ça... je corrige mon code, merci
    Quant à savoir comment mes fenêtres s'enchaînent, dans le code que j'ai posté plus haut, c'est dans le def de mon bouton "Continue". La fenêtre courante est détruite puis j'appelle ma classe suivante qui affiche une autre fenêtre.
    PS : désolé si mon vocabulaire n'est pas le bon, je débute en Python



    Citation Envoyé par Patatarte Voir le message
    Bonjour,

    personnellement j utilise apres l'ouverture de la fenetre tk en 750 x 280 centré dans l ecran (windows manager) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Starting_window.geometry("%dx%d+%d+%d" %(750,280,(Starting_window.winfo_screenwidth()-750)/2,(Starting_window.winfo_screenheight()-280)/2))
    Starting_window.resizable(width=False, height=False)
    par contre je ne sais pas l utiliser dans la class (a mon avis c est apres le self.geometry de ton code)
    Merci, je vais voir si ça fonctionne comme ça, j'aime bien l'idée de centrer mes fenêtres quelquesoit la résolution d'écran
    Merci

  8. #8
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    J'ai ceci pour centrer les fenetres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def centremoi(monwidget):
        # Pour centrer Tk et Toplevels.
        monwidget.update()
        monwidget.geometry("%dx%d+%d+%d" % (monwidget.winfo_reqwidth(),
                                            monwidget.winfo_reqheight(),
                                            (monwidget.winfo_screenwidth()
                                             -monwidget.winfo_reqwidth())/2,
                                            (monwidget.winfo_screenheight()
                                             -monwidget.winfo_reqheight())/2))
        monwidget.resizable(width=False, height=False)
    @+

  9. #9
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut
    C'est encore mieux, merci

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

Discussions similaires

  1. [10g] Positionnement des Frames
    Par sevlev59 dans le forum Forms
    Réponses: 1
    Dernier message: 28/03/2013, 16h59
  2. [iOS 3.x] UINavigationController, positionnement des écrans
    Par Jim_Nastiq dans le forum Objective-C
    Réponses: 1
    Dernier message: 03/08/2010, 10h12
  3. taille des frame suivant résolution de l'écran
    Par chti_juanito dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 25/04/2006, 15h17
  4. Positionnement des blocs
    Par Manio 54 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 10/08/2005, 18h05
  5. appel dans des frames
    Par drizzt2511 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/01/2005, 09h40

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