Appeler dans une classe un widget défini dans une autre

Fermé
augustinpl - 16 avril 2020 à 19:22
 Phil_1857 - 17 avril 2020 à 17:25
Bonjour,

Bonjour, je cherche à m'améliorer en programmation et je souhaiterai savoir comment appeler dans une classe un widget défini dans une autre classe dans un programme comme celui-ci:

import tkinter as tk

class SampleApp(tk.Tk):

def __init__(self, *args, **kwargs):

tk.Tk.__init__(self, *args, **kwargs)

# the container is where we'll stack a bunch of frames

# on top of each other, then the one we want visible

# will be raised above the others

container = tk.Frame(self)

container.pack(side="top", fill="both", expand=True)

container.grid_rowconfigure(0, weight=1)

container.grid_columnconfigure(0, weight=1)

self.frames = {}

for F in (StartPage, PageOne, PageTwo):

page_name = F.__name__

frame = F(parent=container, controller=self)

self.frames[page_name] = frame

# put all of the pages in the same location;

# the one on the top of the stacking order

# will be the one that is visible.

frame.grid(row=0, column=0, sticky="nsew")

self.show_frame("StartPage")

def show_frame(self, page_name):

# Show a frame for the given page name

frame = self.frames[page_name]

frame.tkraise()

class StartPage(tk.Frame):

def __init__(self, parent, controller):

tk.Frame.__init__(self, parent)

self.controller = controller

label = tk.Label(self, text="This is the start page", font="Courrier")

label.pack(side="top", fill="x", pady=10)

button1 = tk.Button(self, text="Go to Page One", command=lambda: controller.show_frame("PageOne"))

button2 = tk.Button(self, text="Go to Page Two", command=lambda: controller.show_frame("PageTwo"))

button1.pack()

button2.pack()

class PageOne(tk.Frame):

def __init__(self, parent, controller):

tk.Frame.__init__(self, parent)

self.controller = controller

label = tk.Label(self, text="This is page 1", font="Courrier")

label.pack(side="top", fill="x", pady=10)

tk.Label(self, text="Choisi le sexe du personnage à séduire:", font=('Courrier', 30), bg='#FCCFFC', fg='white').pack(expand=tk.YES, side="top", fill="x", pady=5)

button3 = tk.Button(self, text="Go to the start page", command=lambda: controller.show_frame("StartPage"))

button3.pack()

class PageTwo(tk.Frame):

def __init__(self, parent, controller):

tk.Frame.__init__(self, parent)

self.controller = controller

label = tk.Label(self, text="This is page 2", font="Courrier")

label.pack(side="top", fill="x", pady=10)

button = tk.Button(self, text="Go to the start page", command=lambda: controller.show_frame("StartPage"))

button.pack()

tk.master.button1

if __name__ == "__main__":

app = SampleApp()

app.mainloop()

Merci d'avance
A voir également:

1 réponse

Bonjour,

Tu as déjà posé cette question sur un autre forum et on t'as répondu, non ? :-)
0