Guest User

Untitled

a guest
Feb 9th, 2025
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. #gui.py
  2. from tkinter import *
  3.  
  4. root: Tk = Tk()
  5. root.geometry("640x480")
  6.  
  7. #wins.py
  8. from elems.window import Window
  9. from elems.segment import Segment
  10. from gui import root
  11.  
  12. windows: dict[str, Window] = {}
  13.  
  14. windows["main"] = Window(
  15. (Segment(root),
  16. )
  17. )
  18.  
  19. root.mainloop()
  20.  
  21. #window.py
  22. from tkinter import *
  23. from elems.page import Page
  24. from elems.segment import Segment
  25.  
  26. MAX_SEGMENTS_PAGE: int = 8
  27.  
  28. class Window:
  29. def __init__(self, segments: list[Segment] | None = None) -> None:
  30. self.enabled: bool = False
  31. self.page_index: int = 0
  32. if segments != None:
  33. self.set(segments)
  34.  
  35. def set(self, segments: list[Segment], back=False) -> None:
  36. import wins
  37. if back: segments = [Segment(f"Back", 450, 50, "⬅", wins.windows[0]), *segments]
  38. self.pages: list[Page] = self.create_pages(segments)
  39.  
  40. def disable(self) -> None:
  41. print("Disable win")
  42. try:
  43. for page in self.pages:
  44. page.hide()
  45. except AttributeError:
  46. return
  47. self.enabled = False
  48.  
  49. def create_pages(self, segments: list[Segment]) -> None:
  50. pages: list[Page] = [Page(segments[i:i + MAX_SEGMENTS_PAGE], self) for i in range(0, len(segments), MAX_SEGMENTS_PAGE)]
  51. for seg in segments:
  52. seg.hide()
  53.  
  54. return pages
  55.  
  56. #page.py
  57. from tkinter import *
  58. from elems.segment import Segment
  59. import elems.window
  60.  
  61. class Page:
  62. def __init__(self, segments: list[Segment], window):
  63. self.segments: list[Segment] = segments
  64. self.window: elems.window.Window = window
  65.  
  66. def hide(self) -> None:
  67. print("disable Page")
  68. for seg in self.segments:
  69. seg.hide()
  70.  
  71. #segment.py
  72. from tkinter import *
  73. from collections.abc import Callable
  74.  
  75. class Segment:
  76. def __init__(self, root: Tk):
  77. self.frm: Frame = Frame(root, bg="red", height=60)
  78. self.frm.pack(fill=X)
  79. self.frm.pack_propagate(False)
  80.  
  81. self.root = root
  82.  
  83. def hide(self) -> None:
  84. print("Hide")
  85. self.frm.pack_forget()
  86.  
  87. def show(self) -> None:
  88. self.frm.pack(fill=X)
Add Comment
Please, Sign In to add comment