Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #gui.py
- from tkinter import *
- root: Tk = Tk()
- root.geometry("640x480")
- #wins.py
- from elems.window import Window
- from elems.segment import Segment
- from gui import root
- windows: dict[str, Window] = {}
- windows["main"] = Window(
- (Segment(root),
- )
- )
- root.mainloop()
- #window.py
- from tkinter import *
- from elems.page import Page
- from elems.segment import Segment
- MAX_SEGMENTS_PAGE: int = 8
- class Window:
- def __init__(self, segments: list[Segment] | None = None) -> None:
- self.enabled: bool = False
- self.page_index: int = 0
- if segments != None:
- self.set(segments)
- def set(self, segments: list[Segment], back=False) -> None:
- import wins
- if back: segments = [Segment(f"Back", 450, 50, "⬅", wins.windows[0]), *segments]
- self.pages: list[Page] = self.create_pages(segments)
- def disable(self) -> None:
- print("Disable win")
- try:
- for page in self.pages:
- page.hide()
- except AttributeError:
- return
- self.enabled = False
- def create_pages(self, segments: list[Segment]) -> None:
- pages: list[Page] = [Page(segments[i:i + MAX_SEGMENTS_PAGE], self) for i in range(0, len(segments), MAX_SEGMENTS_PAGE)]
- for seg in segments:
- seg.hide()
- return pages
- #page.py
- from tkinter import *
- from elems.segment import Segment
- import elems.window
- class Page:
- def __init__(self, segments: list[Segment], window):
- self.segments: list[Segment] = segments
- self.window: elems.window.Window = window
- def hide(self) -> None:
- print("disable Page")
- for seg in self.segments:
- seg.hide()
- #segment.py
- from tkinter import *
- from collections.abc import Callable
- class Segment:
- def __init__(self, root: Tk):
- self.frm: Frame = Frame(root, bg="red", height=60)
- self.frm.pack(fill=X)
- self.frm.pack_propagate(False)
- self.root = root
- def hide(self) -> None:
- print("Hide")
- self.frm.pack_forget()
- def show(self) -> None:
- self.frm.pack(fill=X)
Add Comment
Please, Sign In to add comment