Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.17 KB | None | 0 0
  1. from utils import *
  2. from error_null import *
  3. from error_non import *
  4. from days5 import *
  5. import sys
  6. from PyQt5 import QtCore, QtGui, QtWidgets, QtMultimedia
  7. from PyQt5.QtWidgets import QWidget, QApplication
  8.  
  9.  
  10. class Example(QWidget):
  11.  
  12. def __init__(self):
  13. super().__init__()
  14. self.day5 = list()
  15.  
  16. self.load_mp3('weather_minus.mp3')
  17. self.player.play()
  18.  
  19. self.initUI()
  20.  
  21. def load_mp3(self, filename):
  22. media = QtCore.QUrl.fromLocalFile(filename)
  23. content = QtMultimedia.QMediaContent(media)
  24. self.player = QtMultimedia.QMediaPlayer()
  25. self.player.setMedia(content)
  26.  
  27. def initUI(self):
  28.  
  29. self.setObjectName("self")
  30. self.resize(523, 325)
  31. self.label = QtWidgets.QLabel(self)
  32. self.label.setGeometry(QtCore.QRect(210, 10, 81, 16))
  33. self.label.setObjectName("label")
  34. # ввод
  35. self.lineEdit = QtWidgets.QLineEdit(self)
  36. self.lineEdit.setGeometry(QtCore.QRect(200, 40, 104, 41))
  37. self.lineEdit.setObjectName("lineEdit")
  38. # чтобы ровненько было
  39. self.gridLayoutWidget = QtWidgets.QWidget(self)
  40. self.gridLayoutWidget.setGeometry(QtCore.QRect(20, 110, 142, 191))
  41. self.gridLayoutWidget.setObjectName("gridLayoutWidget")
  42. self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
  43. self.gridLayout.setContentsMargins(0, 0, 0, 0)
  44. self.gridLayout.setObjectName("gridLayout")
  45. # 1
  46. self.pushButton = QtWidgets.QPushButton(self.gridLayoutWidget)
  47. self.pushButton.setObjectName("pushButton")
  48. self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)
  49. self.pushButton.clicked.connect(self.show_1day)
  50. # 2
  51. # TODO: надо законнектить функцию self.show_2day
  52. self.pushButton_2 = QtWidgets.QPushButton(self.gridLayoutWidget)
  53. self.pushButton_2.setObjectName("pushButton_2")
  54. self.gridLayout.addWidget(self.pushButton_2, 1, 0, 1, 1)
  55. self.pushButton_2.clicked.connect(self.show_2day)
  56. # 3
  57. # TODO: надо законнектить функцию self.show_3day
  58. self.pushButton_3 = QtWidgets.QPushButton(self.gridLayoutWidget)
  59. self.pushButton_3.setObjectName("pushButton_3")
  60. self.gridLayout.addWidget(self.pushButton_3, 2, 0, 1, 1)
  61. self.pushButton_3.clicked.connect(self.show_3day)
  62. # 4
  63. # TODO: надо законнектить функцию self.show_4day
  64. self.pushButton_4 = QtWidgets.QPushButton(self.gridLayoutWidget)
  65. self.pushButton_4.setObjectName("pushButton_4")
  66. self.gridLayout.addWidget(self.pushButton_4, 3, 0, 1, 1)
  67. self.pushButton_4.clicked.connect(self.show_4day)
  68. # 5
  69. # TODO: надо законнектить функцию self.show_5day
  70. self.pushButton_5 = QtWidgets.QPushButton(self.gridLayoutWidget)
  71. self.pushButton_5.setObjectName("pushButton_5")
  72. self.gridLayout.addWidget(self.pushButton_5, 4, 0, 1, 1)
  73. self.pushButton_5.clicked.connect(self.show_5day)
  74. # кнопка чистка
  75. self.pushButton_6 = QtWidgets.QPushButton(self)
  76. self.pushButton_6.setGeometry(QtCore.QRect(350, 41, 112, 41))
  77. self.pushButton_6.setObjectName("pushButton")
  78. self.pushButton_6.clicked.connect(self.clear)
  79. self.label_2 = QtWidgets.QLabel(self)
  80. self.label_2.setGeometry(QtCore.QRect(380, 110, 101, 20))
  81. self.label_2.setObjectName("label_2")
  82. self.label_3 = QtWidgets.QLabel(self)
  83. self.label_3.setGeometry(QtCore.QRect(220, 150, 71, 16))
  84. self.label_3.setObjectName("label_3")
  85. self.label_4 = QtWidgets.QLabel(self)
  86. self.label_4.setGeometry(QtCore.QRect(210, 210, 81, 20))
  87. self.label_4.setObjectName("label_4")
  88. self.label_5 = QtWidgets.QLabel(self)
  89. self.label_5.setGeometry(QtCore.QRect(230, 270, 51, 16))
  90. self.label_5.setObjectName("label_5")
  91. # show temperature
  92. self.temp = QtWidgets.QTextEdit(self)
  93. self.temp.setGeometry(QtCore.QRect(310, 140, 201, 41))
  94. self.temp.setObjectName("temp")
  95. self.temp.setReadOnly(True)
  96. self.real_feel_temp = QtWidgets.QTextEdit(self)
  97. self.real_feel_temp.setGeometry(QtCore.QRect(310, 200, 201, 41))
  98. self.real_feel_temp.setObjectName("textEdit2")
  99. self.real_feel_temp.setReadOnly(True)
  100. self.pressure = QtWidgets.QTextEdit(self)
  101. self.pressure.setGeometry(QtCore.QRect(310, 260, 201, 41))
  102. self.pressure.setObjectName("textEdit3")
  103. self.pressure.setReadOnly(True)
  104.  
  105. self.retranslateUi()
  106. QtCore.QMetaObject.connectSlotsByName(self)
  107. self.show()
  108.  
  109. def retranslateUi(self):
  110. _translate = QtCore.QCoreApplication.translate
  111. self.setWindowTitle(_translate("self", "Прогноз погоды"))
  112. self.label.setText(_translate("self", "Введите город"))
  113. self.pushButton.setText(_translate("self", "Погода за сегодня"))
  114. self.pushButton_2.setText(_translate("self", "Погда завтра"))
  115. self.pushButton_3.setText(_translate("self", "Погода послезавтра"))
  116. self.pushButton_4.setText(_translate("self", "Погода через три дня"))
  117. self.pushButton_5.setText(_translate("self", "Погода через четыре дня"))
  118. self.pushButton_6.setText(_translate("self", "Очистить"))
  119. self.label_2.setText(_translate("self", "Погода на ..."))
  120. self.label_3.setText(_translate("self", "Температура"))
  121. self.label_4.setText(_translate("self", "Ощущается как"))
  122. self.label_5.setText(_translate("self", "Давление"))
  123.  
  124. def clear(self):
  125. self.lineEdit.clear()
  126. self.temp.clear()
  127. self.real_feel_temp.clear()
  128. self.pressure.clear()
  129.  
  130. def update_info(self, weather_dict):
  131. self.temp.setText(str(weather_dict["Temperature"]["Metric"]["Value"]))
  132. self.real_feel_temp.setText(str(weather_dict["RealFeelTemperature"]["Metric"]["Value"]))
  133. self.pressure.setText(str(weather_dict["Pressure"]["Metric"]["Value"]))
  134.  
  135. def update_info_forecast(self, weather_dict):
  136. avg_value = str((weather_dict['Temperature']['Minimum']['Value']
  137. + weather_dict['Temperature']['Maximum']['Value']) / 2)
  138. self.temp.setText(avg_value)
  139. reel_feel = (weather_dict['RealFeelTemperature']['Minimum']['Value']
  140. + weather_dict['RealFeelTemperature']['Maximum']['Value'] / 2)
  141. real_feel = round(reel_feel, 2)
  142. # правильно выводит 0,3
  143. self.real_feel_temp.setText(str(real_feel))
  144.  
  145. def show_1day(self):
  146. self.label_2.setText("Погода на завтра")
  147. city = self.lineEdit.text()
  148.  
  149. if self.day5 == []:
  150. # получи прогноз
  151. code = get_city_code(city, 'gQ4KpLfD0GOQPqUzvRG1ADl6xtfOK5cn')
  152. self.day5 = get_5day_forecast(code, 'gQ4KpLfD0GOQPqUzvRG1ADl6xtfOK5cn')
  153.  
  154. first_day_weather_dict = self.day5[0] # получаем прогноз на первый день
  155. self.update_info_forecast(first_day_weather_dict) # записываем чиселки, куда следует
  156.  
  157. def show_2day(self):
  158. self.label_2.setText("Погода на послезавтра")
  159. city = self.lineEdit.text()
  160.  
  161. if self.day5 == []:
  162. # получи прогноз
  163. code = get_city_code(city, 'xbGhMFf1GpvDzAGd1bscOXKEteI1CcJL')
  164. self.day5 = get_5day_forecast(code, 'xbGhMFf1GpvDzAGd1bscOXKEteI1CcJL')
  165.  
  166. second_day_weather_dict = self.day5[1] # получаем прогноз на 2 день
  167. self.update_info(second_day_weather_dict) # записываем чиселки, куда следует
  168.  
  169. def show_3day(self):
  170. self.label_2.setText("Погода через три дня")
  171. city = self.lineEdit.text()
  172.  
  173. if self.day5 == []:
  174. # получи прогноз
  175. code = get_city_code(city, 'xbGhMFf1GpvDzAGd1bscOXKEteI1CcJL')
  176. self.day5 = get_5day_forecast(code, 'xbGhMFf1GpvDzAGd1bscOXKEteI1CcJL')
  177.  
  178. third_day_weather_dict = self.day5[2] # получаем прогноз на первый день
  179. self.update_info(third_day_weather_dict) # записываем чиселки, куда следует
  180.  
  181. def show_4day(self):
  182. self.label_2.setText("Погода через четыре дня")
  183. city = self.lineEdit.text()
  184.  
  185. if self.day5 == []:
  186. # получи прогноз
  187. code = get_city_code(city, 'xbGhMFf1GpvDzAGd1bscOXKEteI1CcJL')
  188. self.day5 = get_5day_forecast(code, 'xbGhMFf1GpvDzAGd1bscOXKEteI1CcJL')
  189.  
  190. fourth_day_weather_dict = self.day5[3] # получаем прогноз на первый день
  191. self.update_info(fourth_day_weather_dict) # записываем чиселки, куда следует
  192.  
  193. def show_5day(self):
  194. self.label_2.setText("Погода через пять дней")
  195. city = self.lineEdit.text()
  196.  
  197. if self.day5 == []:
  198. # получи прогноз
  199. code = get_city_code(city, 'xbGhMFf1GpvDzAGd1bscOXKEteI1CcJL')
  200. self.day5 = get_5day_forecast(code, 'xbGhMFf1GpvDzAGd1bscOXKEteI1CcJL')
  201.  
  202. fifth_day_weather_dict = self.day5[4] # получаем прогноз на первый день
  203. self.update_info(fifth_day_weather_dict) # записываем чиселки, куда следует
  204.  
  205.  
  206. # code = get_city_code('Samara', 'gQ4KpLfD0GOQPqUzvRG1ADl6xtfOK5cn')
  207. # test = get_current_weather(code, 'xbGhMFf1GpvDzAGd1bscOXKEteI1CcJL')
  208. # test2 = get_5day_forecast(code, 'gQ4KpLfD0GOQPqUzvRG1ADl6xtfOK5cn')
  209. # gQ4KpLfD0GOQPqUzvRG1ADl6xtfOK5cn
  210. # xbGhMFf1GpvDzAGd1bscOXKEteI1CcJL
  211. # for i in test2[0]:
  212. # print(i)
  213. # pyuic5 ui_file.ui -o ui_file.py
  214.  
  215.  
  216. if __name__ == '__main__':
  217.  
  218. app = QApplication(sys.argv)
  219. ex = Example()
  220. sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement