CanadianGamer

View.py

Aug 4th, 2023
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. import tkinter
  2. from tkinter.constants import *
  3. from tkinter import StringVar, IntVar
  4. from tkinter.ttk import *
  5. from model.weather import Weather
  6.  
  7.  
  8. class View(tkinter.Tk):
  9.  
  10. def __init__(self,controller):
  11. super().__init__()
  12. self.geometry("700x500")
  13.  
  14. self.controller = controller
  15. self.bind('<Return>', self.controller.handleButtonSearch)
  16.  
  17. #--Variables--
  18. self.varSearch = StringVar()
  19. self.varTemp = StringVar()
  20. self.varLocation = StringVar()
  21. self.varCondition = StringVar()
  22. self.varFeelsLike = StringVar()
  23. self.varWindSpeed = StringVar()
  24. self.varWindDir = StringVar()
  25. self.varHumid = StringVar()
  26. self.varUnits = IntVar()
  27. self.varWeatherIcon = Weather()
  28.  
  29.  
  30. self.varTemp.set("90")
  31. self.varLocation.set("ur mom")
  32. #----- Frames ----
  33. self.mainframe =Frame(self)
  34. self.mainframe.pack()
  35. self._createFrameSerachBar()
  36. self._createFrameInfo()
  37. self._createFrameDetails()
  38. self._createFrameControls()
  39.  
  40. def _createFrameSerachBar(self):
  41. self.frameSearchBar = Frame(self.mainframe)
  42.  
  43. comboSearch = Combobox(self.frameSearchBar, textvariable=self.varSearch)
  44. buttonSearch = Button(self.frameSearchBar, text = "Search", command=self.controller.handleButtonSearch)
  45.  
  46. comboSearch.pack(padx = 10, side = LEFT)
  47. buttonSearch.pack(side=RIGHT)
  48. self.frameSearchBar.pack()
  49.  
  50. def _createFrameInfo(self):
  51. self.frameInfo = Frame(self.mainframe)
  52.  
  53. image = tkinter.PhotoImage(data = self.varWeatherIcon.getConditionIcon())
  54.  
  55. labelTemp = Label(self.frameInfo, textvariable=self.varTemp)
  56. labelLocation = Label(self.frameInfo, textvariable= self.varLocation)
  57. labelIcon = Label(self.frameInfo, image)
  58.  
  59. labelTemp.pack(pady = 5)
  60. labelLocation.pack(pady = 5)
  61. labelIcon.pack(pady = 5)
  62. self.frameInfo.pack()
  63.  
  64. def _createFrameDetails(self):
  65. self.frameDetails = Frame(self.mainframe)
  66.  
  67. labelConditionLeft = Label(self.frameDetails, text= 'Current Conditiom:')
  68. labelFeelsLikeLeft = Label(self.frameDetails, text = 'Feels Like:')
  69. labelWindSpeedLeft= Label(self.frameDetails, text ='Wind Speed:')
  70. labelWindDirLeft = Label(self.frameDetails, text = 'Wind Direction:')
  71. labelHumidLeft = Label(self.frameDetails, text= 'Humidity:')
  72.  
  73. labelConditionRight = Label(self.frameDetails, textvariable = self.varCondition)
  74. labelFeelsLikeRight = Label(self.frameDetails, textvariable= self.varFeelsLike)
  75. labelWindSpeedRight= Label(self.frameDetails, textvariable= self.varWindSpeed)
  76. labelWindDirRight = Label(self.frameDetails, textvariable= self.varWindDir)
  77. labelHumidRight = Label(self.frameDetails, textvariable= self.varHumid)
  78.  
  79. labelConditionLeft.grid(row = 0, column=0, pady=5, sticky = W)
  80. labelConditionRight.grid(row= 0, column=1,pady=5, sticky= E )
  81. labelFeelsLikeLeft.grid(row = 1, column=0, pady=5, sticky = W)
  82. labelFeelsLikeRight.grid(row= 1, column=1,pady=5, sticky= E )
  83. labelWindSpeedLeft.grid(row = 2, column=0, pady=5, sticky = W)
  84. labelWindSpeedRight.grid(row= 2, column=1,pady=5, sticky= E )
  85. labelWindDirLeft.grid(row = 3, column=0, pady=5, sticky = W)
  86. labelWindDirRight.grid(row= 3, column=1,pady=5, sticky= E )
  87. labelHumidLeft.grid(row = 4, column=0, pady=5, sticky = W)
  88. labelHumidRight.grid(row= 4, column=1,pady=5, sticky= E )
  89. self.frameDetails.pack()
  90.  
  91.  
  92. def _createFrameControls(self):
  93. self.frameControls = Frame(self.mainframe)
  94.  
  95. radioF = Radiobutton(self.frameControls,text = 'Fahrenheit', variable= self.varUnits, value= 1, command=self.controller.updateGUI)
  96. radioC= Radiobutton(self.frameControls,text = 'Celcius', variable= self.varUnits, value= 2, command=self.controller.updateGUI)
  97.  
  98. radioF.invoke()
  99.  
  100. radioF.pack( side= LEFT, padx=7.5, pady =5)
  101. radioC.pack( side= RIGHT, padx=7.5, pady =5)
  102.  
  103. self.frameControls.pack()
  104.  
  105. def main(self):
  106. self.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment