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.7KB

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.h = 400
  12. self.w = 500
  13. self.faktor = [(0.125),(0.625), (0.25)]
  14. #self.resizable(height=False, width= False)
  15. self.geometry('{}x{}'.format(self.w,self.h))
  16. self.createTopFrame()
  17. self.createMainFrame()
  18. self.createBottomFrame()
  19. self.bind("<Configure>", self.adjustSize)
  20. self.protocol("WM_DELETE_WINDOW", self.onClosing)
  21. def changeFrame(self, pageName):
  22. frame = self.frames[pageName]
  23. frame.tkraise()
  24. def adjustSize(self, event):
  25. if(str(event.widget) =="."):
  26. self.h = event.height
  27. self.w = event.width
  28. self.topFrame.configure(height=(self.h*self.faktor[0]), width=self.w)
  29. self.mainFrame.configure(height=(self.h*self.faktor[1]), width=self.w)
  30. self.bottomFrame.configure(height=(self.h*self.faktor[2]), width=self.w)
  31. self.container.configure(height=(self.h*self.faktor[1]), width=self.w)
  32. for f in self.frames:
  33. self.frames[f].configure(height=(self.h*self.faktor[1]), width=self.w)
  34. def onClosing(self):
  35. print("closing")
  36. self.destroy()
  37. def createTopFrame(self):
  38. self.topFrame = Frame(self, bg="blue", height=50, width=500) #, padx=460, pady=10)
  39. l = Label(self.topFrame, text="taktilles Buchstabieren")
  40. self.topFrame.grid(column=0, row=0)
  41. self.topFrame.grid_propagate(0)
  42. self.topFrame.pack_propagate(0)
  43. l.pack()
  44. def createMainFrame(self):
  45. self.mainFrame = Frame(self, bg="red", height=250, width=500)
  46. self.mainFrame.grid(column=0, row=1)
  47. self.mainFrame.pack_propagate(0)
  48. self.container = Frame(self.mainFrame, bg="cyan", height=250, width=500)
  49. self.container.pack(side="top", fill="both", expand = True)
  50. self.container.pack_propagate(0)
  51. self.container.grid_propagate(0)
  52. self.frames = {}
  53. for F in (StartPage, WorkingPage):
  54. page_name = F.__name__
  55. frame = F(parent=self.container, controller=self.controller)
  56. self.frames[page_name] = frame
  57. frame.grid(row=0, column=0, sticky="nsew")
  58. self.changeFrame("StartPage")
  59. def createBottomFrame(self):
  60. self.bottomFrame = Frame(self, bg="green", height=100, width=500)
  61. self.bottomFrame.grid(column=0, row=2)
  62. self.bottomFrame.pack_propagate(0)
  63. label = Label(self.bottomFrame, text="Hier stehen Infos")
  64. label.pack()
  65. class StartPage(Frame):
  66. def __init__(self, parent, controller):
  67. Frame.__init__(self, parent, height=250, width=500, bg="red")
  68. self.grid_propagate(0)
  69. self.pack_propagate(0)
  70. self.controller = controller
  71. testBtn = Button(self, text="test", command=lambda: self.controller.actionPerformed("test"), height=6, width = 10)
  72. testBtn.grid(row=0, column=0)
  73. freeSpellingBtn = Button(self, text="freeSpelling", command=lambda: self.controller.actionPerformed("freeSpelling"), height=6, width = 10)
  74. freeSpellingBtn.grid(row=0, column=1)
  75. class WorkingPage(Frame):
  76. def __init__(self, parent, controller):
  77. Frame.__init__(self, parent)
  78. self.controller = controller
  79. stopBtn = Button(self, text="stop", command=lambda: self.controller.actionPerformed("stop"), height=6, width = 10)
  80. stopBtn.pack()