You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UIViewTKinter.py 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. try:
  2. from Tkinter import *
  3. except ImportError:
  4. from tkinter import *
  5. from UIController import *
  6. class View(Tk):
  7. def __init__(self, c, *args, **kwargs):
  8. Tk.__init__(self, *args, **kwargs)
  9. self.controller = c
  10. self.title("Taktiles Spelling")
  11. #self.resizable(height=False, width= False)
  12. self.geometry('500x400')
  13. #self.configure(bg="blue")
  14. self.createTopFrame()
  15. self.createMainFrame()
  16. self.createBottomFrame()
  17. self.protocol("WM_DELETE_WINDOW", self.onClosing)
  18. def createTopFrame(self):
  19. self.topFrame = Frame(self, bg="blue", height=50, width=500) #, padx=460, pady=10)
  20. l = Label(self.topFrame, text="taktilles Buchstabieren")
  21. self.topFrame.grid(column=0, row=0)
  22. self.topFrame.grid_propagate(0)
  23. self.topFrame.pack_propagate(0)
  24. l.pack()
  25. def createMainFrame(self):
  26. self.mainFrame = Frame(self, bg="red", height=250, width=500)
  27. self.mainFrame.grid(column=0, row=1)
  28. self.mainFrame.pack_propagate(0)
  29. container = Frame(self.mainFrame, bg="cyan", height=250, width=500)
  30. container.pack(side="top", fill="both", expand = True)
  31. container.pack_propagate(0)
  32. container.grid_propagate(0)
  33. self.frames = {}
  34. for F in (StartPage, WorkingPage):
  35. page_name = F.__name__
  36. frame = F(parent=container, controller=self)
  37. self.frames[page_name] = frame
  38. # put all of the pages in the same location;
  39. # the one on the top of the stacking order
  40. # will be the one that is visible.
  41. frame.grid(row=0, column=0, sticky="nsew")
  42. self.changeFrame("StartPage")
  43. def changeFrame(self, pageName):
  44. frame = self.frames[pageName]
  45. frame.tkraise()
  46. #testBtn = Button(self.mainFrame, text="test", command=lambda: self.controller.actionPerformed("test"), height=6, width = 10)
  47. #testBtn.grid(row=0, column=0)
  48. #stopBtn = Button(self.mainFrame, text="stop", command=lambda: self.controller.actionPerformed("stop"), height=6, width = 10)
  49. #stopBtn.grid(row=0, column=1)
  50. def createBottomFrame(self):
  51. self.bottomFrame = Frame(self, bg="green", height=250, width=500)
  52. self.bottomFrame.grid(column=0, row=2)
  53. self.bottomFrame.pack_propagate(0)
  54. label = Label(self.bottomFrame, text="Hier stehen Infos")
  55. label.pack()
  56. def onClosing(self):
  57. print("closing")
  58. self.destroy()
  59. class StartPage(Frame):
  60. def __init__(self, parent, controller):
  61. Frame.__init__(self, parent, height=250, width=500, bg="red")
  62. self.grid_propagate(0)
  63. self.pack_propagate(0)
  64. self.controller = controller
  65. label = Label(self, text="This is the start page")
  66. label.pack(side="top", fill="x", pady=10)
  67. button1 = Button(self, text="Go to Page One",
  68. command=lambda: controller.changeFrame("WorkingPage"))
  69. button2 = Button(self, text="Go to Page Two",
  70. command=lambda: controller.changeFrame("WorkingPage"))
  71. button1.pack()
  72. button2.pack()
  73. class WorkingPage(Frame):
  74. def __init__(self, parent, controller):
  75. Frame.__init__(self, parent)
  76. self.controller = controller
  77. label = Label(self, text="This is page 1")
  78. label.pack(side="top", fill="x", pady=10)
  79. button = Button(self, text="Go to the start page",
  80. command=lambda: controller.changeFrame("StartPage"))
  81. button.pack()