Apr-16-2019, 09:27 AM
Hi keames
Here a little snippet to play with:
Here a little snippet to play with:
import tkinter as tk import random APP_TITLE = "Frame Stack" APP_XPOS = 50 APP_YPOS = 50 APP_WIDTH = 800 APP_HEIGHT = 800 class Application(object): def __init__(self, main_win): self.main_win = main_win self.build() def build(self): self.frame_stack = list() self.stack_pointer = 0 self.main_frame = tk.Frame(self.main_win) self.main_frame.pack(fill='both', expand=True) self.main_frame.columnconfigure(0, weight=1) self.main_frame.rowconfigure(0, weight=1) button_frame = tk.Frame(self.main_frame) button_frame.grid(row=1, column=0, pady=4) self.stack_level_var = tk.StringVar() tk.Label(button_frame, bg='white', width=4, relief='sunken', bd=1, textvariable=self.stack_level_var ).pack(side='left', padx=10) tk.Button(button_frame, text="Up", command=self.button_up).pack(side='left') tk.Button(button_frame, text="Down", command=self.button_down).pack(side='left', padx=(2, 20)) tk.Button(button_frame, text="Add", command=self.add_frame).pack(side='left') tk.Button(button_frame, text="Exit", command=self.main_win.destroy).pack(side='left') self.add_frame() def add_frame(self): level_frame = tk.Frame(self.main_frame, bg=self.random_color()) level_frame.grid(row=0, column=0, sticky='news') level_frame.lift() self.frame_stack.append(level_frame) self.stack_pointer = len(self.frame_stack)-1 self.stack_level_var.set(self.stack_pointer) #self.show_level_frame() #self.stack_pointer += 1 def button_up(self): self.stack_navigator('up') def button_down(self): self.stack_navigator('down') def stack_navigator(self, direction): if direction == 'up': if self.stack_pointer < len(self.frame_stack)-1: self.stack_pointer += 1 elif direction == 'down': if self.stack_pointer > 0: self.stack_pointer -= 1 self.show_level_frame() print(self.stack_pointer, len(self.frame_stack), direction) def show_level_frame(self): self.stack_level_var.set(self.stack_pointer) self.frame_stack[self.stack_pointer].lift() def random_color (self): random_red = ("00" + hex(random.randint(0, 255))[2:])[-2] random_green = ("00" + hex(random.randint(0, 255))[2:])[-2] random_blue = ("00" + hex(random.randint(0, 255))[2:])[-2] return "#{}{}{}".format(random_red, random_green, random_blue) def main(): main_win = tk.Tk() main_win.title(APP_TITLE) main_win.geometry("+{}+{}".format(APP_XPOS, APP_YPOS)) main_win.geometry("{}x{}".format(APP_WIDTH, APP_HEIGHT)) app = Application(main_win) main_win.mainloop() if __name__ == '__main__': main():-)