Introduction de code super simple. Un autre article (ici) est devenu long à cause du code lié à OpenCV, je vais donc le résumer brièvement. Cela devrait fonctionner si l'oreiller est inclus.
main.py
# -*- coding: utf-8 -*-
import tkinter as tk
import PIL.Image, PIL.ImageTk
class App(tk.Tk):
#incantation
def __init__(self, *args, **kwargs):
#incantation
tk.Tk.__init__(self, *args, **kwargs)
#Décidez du titre de la fenêtre
self.title("Tkinter change page")
#Déterminer la taille de la fenêtre
self.geometry("800x600")
#Rendre la grille de fenêtre 1x1
#Si vous commentez ce processus, le placement changera.
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(0, weight=1)
#-----------------------------------main_frame-----------------------------
#Créer un cadre de page principal
self.main_frame = tk.Frame()
self.main_frame.grid(row=0, column=0, sticky="nsew")
#Création d'étiquettes de titre
self.titleLabel = tk.Label(self.main_frame, text="Main Page", font=('Helvetica', '35'))
self.titleLabel.pack(anchor='center', expand=True)
#Bouton pour passer à l'image 1
self.changePageButton = tk.Button(self.main_frame, text="Go to frame1", command=lambda : self.changePage(self.frame1))
self.changePageButton.pack()
#--------------------------------------------------------------------------
#-----------------------------------frame1---------------------------------
#Créer une image de destination
self.frame1 = tk.Frame()
self.frame1.grid(row=0, column=0, sticky="nsew")
#Création d'étiquettes de titre
self.titleLabel = tk.Label(self.frame1, text="Frame 1", font=('Helvetica', '35'))
self.titleLabel.pack(anchor='center', expand=True)
#Bouton pour revenir de l'image 1 à l'image principale
self.back_button = tk.Button(self.frame1, text="Back", command=lambda : self.changePage(self.main_frame))
self.back_button.pack()
#--------------------------------------------------------------------------
#main_Cadre d'affichage en haut
self.main_frame.tkraise()
def changePage(self, page):
'''
Fonction de transition d'écran
'''
page.tkraise()
if __name__ == "__main__":
app = App()
app.mainloop()
Le point est la commande tkraise. tkraise place l'image spécifiée au premier plan. Les cadres sont placés les uns sur les autres, et le cadre au dos est ramené à chaque pression sur le bouton. Les boutons sont super simples sans aucune décoration.
Une telle image
La plupart des choses sont écrites dans le commentaire dans le code, mais pour le moment,
Commencez par créer le cadre principal (main_frame) et le cadre de destination (frame1).
Placez deux cadres aux coordonnées (0,0) en utilisant la méthode de la grille
Il peut être empilé en utilisant la grille.
Rien à dire sur l'étiquette de titre.
Le widget bouton spécifie la fonction changePage dans la commande.
La fonction changePage prend un nom de trame comme argument.
Au fait, lors de la spécification d'une fonction qui prend un argument (self ne compte pas) dans la commande du widget bouton,
commande = lambda: fonction
Doit être.
J'en ai fait un code assez court donc c'est facile à comprendre. Le plus court que j'aie jamais vu. Bien sûr, il existe un moyen d'afficher et de masquer la page à chaque fois sans utiliser tkraise, mais je pense que tkraise est le plus simple.
Recommended Posts