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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
class App(ttk.Frame):
def __init__(self, parent):
ttk.Frame.__init__(self)
# le container contient les frames
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 (LoginPage, MainPage):
page_name = F.__name__
frame = F(parent=container, controller=self)
self.frames[page_name] = frame
frame.grid(row=0, column=0, sticky="nsew")
#J'affiche la première frame.
self.show_frame("LoginPage")
print(self.frames['LoginPage'].var_activity.get())
def show_frame(self, page_name):
frame = self.frames[page_name]
frame.tkraise()
class LoginPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
.
.
.
# Create control variables
.
.
.
self.var_activity = tk.StringVar() #L'attribut en question est défini ici.
# Create widgets
self.setup_widgets()
.
.
.
def setup_widgets(self):
.
.
.
# Create a Frame for input widgets
self.widgets_frame = ttk.Frame(self, padding=(0, 0, 0, 10))
self.widgets_frame.grid(row=0, column=1, padx=10, pady=(30, 10), sticky="nsew", rowspan=3)
self.widgets_frame.columnconfigure(index=0, weight=1)
# Read-only combobox
self.readonly_combo = ttk.Combobox(self.widgets_frame, state="readonly", textvariable=self.var_activity, values=self.readonly_combo_list)
self.readonly_combo.current(0)
self.readonly_combo.grid(row=3, column=0, padx=5, pady=10, sticky="ew")
.
.
.
class MainPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
.
.
.
# Create widgets
self.setup_widgets()
def setup_widgets(self):
# Create a Frame for input widgets
self.widgets_frame = ttk.Frame(self, padding=(0, 0, 0, 10))
self.widgets_frame.grid(row=0, column=1, padx=10, pady=(30, 10), sticky="nsew", rowspan=3)
self.widgets_frame.columnconfigure(index=0, weight=1)
#Le problème est ici, je souhaite récupérer l'attribut "var_activity" de LoginPage.
# Accentbutton
self.accentbutton1 = ttk.Button(self.widgets_frame, text=LoginPage.var_activity.get(), style="Accent.TButton", command=lambda : self.startPause())
self.accentbutton1.grid(row=7, column=1, padx=5, pady=10, sticky="nsew")
if __name__ == "__main__":
root = tk.Tk()
.
.
.
app = App(root)
app.pack(fill="both", expand=True)
.
.
.
root.mainloop() |
Partager