Advertisement
WupEly

Untitled

Feb 6th, 2023
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.07 KB | None | 0 0
  1. from PyQt6 import QtWidgets, QtGui, QtCore
  2. import sys
  3. import urllib.request
  4.  
  5.  
  6. class Ui_MainWindow(object):
  7. def setupUi(self, MainWindow):
  8. MainWindow.setObjectName("MainWindow")
  9. MainWindow.resize(800, 600)
  10. self.centralwidget = QtWidgets.QWidget(MainWindow)
  11. self.centralwidget.setObjectName("centralwidget")
  12. self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
  13. self.verticalLayoutWidget.setGeometry(QtCore.QRect(130, 420, 511, 131))
  14. self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
  15. self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
  16. self.verticalLayout.setContentsMargins(0, 0, 0, 0)
  17. self.verticalLayout.setObjectName("verticalLayout")
  18. self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
  19. self.horizontalLayout_2.setObjectName("horizontalLayout_2")
  20. self.label_3 = QtWidgets.QLabel(self.verticalLayoutWidget)
  21. self.label_3.setObjectName("label_3")
  22. self.horizontalLayout_2.addWidget(self.label_3)
  23. self.size_width = QtWidgets.QLineEdit(self.verticalLayoutWidget)
  24. self.size_width.setObjectName("size_width")
  25. self.horizontalLayout_2.addWidget(self.size_width)
  26. self.size_height = QtWidgets.QLineEdit(self.verticalLayoutWidget)
  27. self.size_height.setObjectName("size_height")
  28. self.horizontalLayout_2.addWidget(self.size_height)
  29. self.verticalLayout.addLayout(self.horizontalLayout_2)
  30. self.comboBox = QtWidgets.QComboBox(self.verticalLayoutWidget)
  31. self.comboBox.setCurrentText("")
  32. self.comboBox.setObjectName("comboBox")
  33. self.verticalLayout.addWidget(self.comboBox)
  34. self.horizontalLayout = QtWidgets.QHBoxLayout()
  35. self.horizontalLayout.setObjectName("horizontalLayout")
  36. self.label = QtWidgets.QLabel(self.verticalLayoutWidget)
  37. self.label.setObjectName("label")
  38. self.horizontalLayout.addWidget(self.label)
  39. self.coords_y = QtWidgets.QLineEdit(self.verticalLayoutWidget)
  40. self.coords_y.setText("")
  41. self.coords_y.setObjectName("coords_y")
  42. self.horizontalLayout.addWidget(self.coords_y)
  43. self.coords_x = QtWidgets.QLineEdit(self.verticalLayoutWidget)
  44. self.coords_x.setObjectName("coords_x")
  45. self.horizontalLayout.addWidget(self.coords_x)
  46. self.pushButton = QtWidgets.QPushButton(self.verticalLayoutWidget)
  47. self.pushButton.setObjectName("pushButton")
  48. self.horizontalLayout.addWidget(self.pushButton)
  49. self.verticalLayout.addLayout(self.horizontalLayout)
  50. self.image_cont = QtWidgets.QLabel(self.centralwidget)
  51. self.image_cont.setGeometry(QtCore.QRect(130, 40, 511, 371))
  52. self.image_cont.setText("")
  53. self.image_cont.setObjectName("image_cont")
  54. MainWindow.setCentralWidget(self.centralwidget)
  55. self.menubar = QtWidgets.QMenuBar(MainWindow)
  56. self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
  57. self.menubar.setObjectName("menubar")
  58. MainWindow.setMenuBar(self.menubar)
  59. self.statusbar = QtWidgets.QStatusBar(MainWindow)
  60. self.statusbar.setObjectName("statusbar")
  61. MainWindow.setStatusBar(self.statusbar)
  62.  
  63. self.retranslateUi(MainWindow)
  64. QtCore.QMetaObject.connectSlotsByName(MainWindow)
  65.  
  66. def retranslateUi(self, MainWindow):
  67. _translate = QtCore.QCoreApplication.translate
  68. MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
  69. self.label_3.setText(_translate("MainWindow", "Size:"))
  70. self.label.setText(_translate("MainWindow", "Your coords:"))
  71. self.pushButton.setText(_translate("MainWindow", "show"))
  72.  
  73.  
  74. class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
  75. def __init__(self):
  76. # Это здесь нужно для доступа к переменным, методам
  77. # и т.д. в файле design.py
  78. super().__init__()
  79. self.setupUi(self) # Это нужно для инициализации нашего дизайна
  80. self.pushButton.clicked.connect(lambda: self.show_map())
  81. map_types = ["map", "sat", "skl", "trf"]
  82. self.comboBox.addItems(map_types)
  83. self.spn = 0
  84.  
  85. self.spn_list = [0.001, 0.01, 0.02, 0.03, 0.05, 0.1, 0.2, 0.4, 0.8, 2, 3, 10, 15, 25]
  86. self.max_x = 180
  87. self.min_x = -180
  88. self.max_y = 85
  89. self.min_y = -85
  90.  
  91. def show_map(self):
  92. coord_y = self.coords_y.text()
  93. coord_x = self.coords_x.text()
  94. size_x = self.size_width.text()
  95. size_y = self.size_height.text()
  96. path = "map.jpg" if self.comboBox.currentText() == "sat" else "map.png"
  97. urllib.request.urlretrieve(
  98. f"https://static-maps.yandex.ru/1.x/?ll={coord_x},{coord_y}&size={size_x},{size_y}" +
  99. f"&spn={self.spn_list[self.spn]},{self.spn_list[self.spn]}&l={self.comboBox.currentText()}",
  100. path)
  101. map = QtGui.QPixmap(path)
  102. self.image_cont.setPixmap(map)
  103. self.show()
  104.  
  105. def increase_zoom(self):
  106. if self.spn > 0:
  107. self.spn -= 1
  108.  
  109. def decrease_zoom(self):
  110. if self.spn < len(self.spn_list) - 1:
  111. self.spn += 1
  112.  
  113. def move_left(self):
  114. if self.min_x < float(self.coords_x.text()):
  115. self.coords_x.setText(str(float(self.coords_x.text()) - (self.spn_list[self.spn] * 3)))
  116.  
  117. def move_right(self):
  118. if float(self.coords_x.text()) < self.max_x:
  119. self.coords_x.setText(str(float(self.coords_x.text()) + (self.spn_list[self.spn] * 3)))
  120.  
  121. def move_down(self):
  122. if self.min_y < float(self.coords_y.text()):
  123. self.coords_y.setText(str(float(self.coords_y.text()) - (self.spn_list[self.spn] * 1.5)))
  124.  
  125. def move_up(self):
  126. if float(self.coords_y.text()) < self.max_y:
  127. self.coords_y.setText(str(float(self.coords_y.text()) + (self.spn_list[self.spn] * 1.5)))
  128.  
  129. def keyPressEvent(self, event):
  130. if event.key() == QtCore.Qt.Key.Key_PageUp:
  131. self.increase_zoom()
  132. self.show_map()
  133. elif event.key() == QtCore.Qt.Key.Key_PageDown:
  134. self.decrease_zoom()
  135. self.show_map()
  136. elif event.key() == QtCore.Qt.Key.Key_W:
  137. self.move_up()
  138. self.show_map()
  139. elif event.key() == QtCore.Qt.Key.Key_A:
  140. self.move_left()
  141. self.show_map()
  142. elif event.key() == QtCore.Qt.Key.Key_S:
  143. self.move_down()
  144. self.show_map()
  145. elif event.key() == QtCore.Qt.Key.Key_D:
  146. self.move_right()
  147. self.show_map()
  148.  
  149. # print(f"x - {self.coords_x.text()}; y - {self.coords_y.text()}")
  150.  
  151.  
  152. def main():
  153. app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication
  154. window = ExampleApp() # Создаём экземпляр класса ExampleApp
  155. window.show() # Показываем окно
  156. app.exec() # и запускаем приложение
  157.  
  158.  
  159. if __name__ == "__main__":
  160. main()
  161.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement