Partage
  • Partager sur Facebook
  • Partager sur Twitter

positionner une fenetre au centre de l'écran

    19 mars 2024 à 18:03:55

    Bonjour, j'ai récupérer un script python, et je suis en train de l'adapter pour un projet.

    J'ai réussi à dimensionner les frames, mettre de la couleur, du texte, mais je ne trouve pas pour le centrage à l'écran.

    j'ai testé différentes méthodes mais sans succès.

    Pourrais-je avoir de l'aide svp?

    Voici mon code :

    try:
        import Tkinter as tk
    except:
        import tkinter as tk
    #root = tk.Tk()
    
    
    classSampleApp(tk.Tk):
        def__init__(self):
            tk.Tk.__init__(self)
            self._frame = None
    self.switch_frame(StartPage)
    #self.geometry("210x150+10+10")
    #self.geometry("%dx%d%+d%+d" % (l,h,(tk.winfo_screenwidth()-l)//2,(tk.winfo_screenheight()-h)//2))
    #x_cordinate = int((screen_width/2) - (window_width/2))
    #y_cordinate = int((screen_height/2) - (window_height/2))
    #screen_width = tk.winfo_screenwidth()
    #screen_height = tk.winfo_screenheight()
    #self.master.geometry("{}x{}+{}+{}".format(window_width, window_height, x_cordinate, y_cordinate))
    defswitch_frame(self, frame_class):
            new_frame = frame_class(self)
            ifself._frame isnotNone:
                self._frame.destroy()
            self._frame = new_frame
            self._frame.pack()
    
        #def centrefenetre(fen):
    #fen.update_idletasks()
    #l,h,x,y=geoliste(fen.geometry())
    #fen.geometry("%dx%d%+d%+d" % (l,h,(fen.winfo_screenwidth()-l)//2,(fen.winfo_screenheight()-h)//2))
    
    classStartPage(tk.Frame):
        def__init__(self, master):
            tk.Frame.__init__(self, master)
            self.master.title("StartPage")
            tk.Label(self, text="Choisissez l'action à executer.", font=("Helvetica", 18, "bold")).pack(
                side="top", fill="x", pady=20, padx=60
            )
    
            tk.Button(
                self, text="Go to page one", command=lambda: master.switch_frame(PageOne)
            ).pack(side="left",padx=15, pady=6)
            tk.Button(
                self, text="Go to page two", command=lambda: master.switch_frame(PageTwo)
            ).pack(side="right",padx=15, pady=6)
    
    classPageOne(tk.Frame):
        def__init__(self, master):
            tk.Frame.__init__(self, master)
            tk.Frame.configure(self, bg="green")
            tk.Label(self, text="vous avez choisi la page One", font=("Helvetica", 18, "bold")).pack(
                side="top", fill="x", pady=20, padx=60
            )
            self.master.title("PageOne ")
            tk.Button(
                self,
                text="Go back to start page",
                command=lambda: master.switch_frame(StartPage),
            ).pack(side="top",padx=15, pady=6)
    
    classPageTwo(tk.Frame):
        def__init__(self, master):
            tk.Frame.__init__(self, master)
            tk.Frame.configure(self, bg="red")
            tk.Label(self, text="vous avez choisi la page two", font=("Helvetica", 18, "bold")).pack(
                side="top", fill="x", pady=20, padx=60
            )
            self.master.title("PageTow")
            tk.Button(
                self,
                text="Go back to start page",
                command=lambda: master.switch_frame(StartPage),
            ).pack(side="top",padx=15, pady=6)
    
    if__name__ == "__main__":
        app = SampleApp()
        app.mainloop()

    -
    Edité par CaliWeb 19 mars 2024 à 22:34:54

    • Partager sur Facebook
    • Partager sur Twitter
      21 mars 2024 à 17:21:03

      Bonjour.

      A tout hasard, je me permets de partage ma méthode.

      A la fin de la conception de ma fenêtre, je fais un "update" et après ce qui suit ci-dessous. Je réutilise une fonction "centerWindow" que j'avais déjà créée auparavant, j'ai juste intégré 2 paramètres.

      def centerWindow(width, height):
          # Récupération des dimensions de l'écran
          screen_width = fen.winfo_screenwidth()
          screen_height = fen.winfo_screenheight()
      
          # Calcul coordonnées du point d'insertion
          x = (screen_width/2) - (width/2)
          y = (screen_height/2) - (height/2)
      
          # Paramétrage de la géométrie de la fenêtre
          fen.geometry('%dx%d+%d+%d' % (width, height, x, y))
      
      
      # Détermination de la largeur et hauteur de la fenêtre
      fen.update()
      fen_width = int(str(fen.winfo_geometry()).split("+")[0].split("x")[0])
      fen_height = int(str(fen.winfo_geometry()).split("+")[0].split("x")[1])
      
      
      # Centrage de la fenêtre
      centerWindow(fen_width, fen_height)
      • Partager sur Facebook
      • Partager sur Twitter

      PB68

        23 mars 2024 à 21:48:51

        Bonsoir,

        @PB68 :

        je n'arrive pas a adapter votre code dans le mien.

        Cordialement.

        @umfred :

        Idem, j'ai testé pas mal de lien sur developpez.net, soit j'ai des erreurs, soit tout ce bloque et obliger de redémarrer le pc.

        Note : je suis débutant. 

        -
        Edité par CaliWeb 23 mars 2024 à 22:57:19

        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2024 à 15:51:09

          comme on l'a aussi demandé là-bas, si tu ne nous pas quelles erreurs (messages d'erreurs) tu as dans tel cas, ça va être dur de t'aider. Précise peut-être aussi le système d'exploitation concerné
          • Partager sur Facebook
          • Partager sur Twitter

          positionner une fenetre au centre de l'écran

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown