Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PyQt6 import QtWidgets, QtGui, QtCore
- import sys
- import urllib.request
- class Ui_MainWindow(object):
- def setupUi(self, MainWindow):
- MainWindow.setObjectName("MainWindow")
- MainWindow.resize(800, 600)
- self.centralwidget = QtWidgets.QWidget(MainWindow)
- self.centralwidget.setObjectName("centralwidget")
- self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
- self.verticalLayoutWidget.setGeometry(QtCore.QRect(130, 430, 511, 131))
- self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
- self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
- self.verticalLayout.setContentsMargins(0, 0, 0, 0)
- self.verticalLayout.setObjectName("verticalLayout")
- self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
- self.horizontalLayout_2.setObjectName("horizontalLayout_2")
- self.label_3 = QtWidgets.QLabel(self.verticalLayoutWidget)
- self.label_3.setObjectName("label_3")
- self.horizontalLayout_2.addWidget(self.label_3)
- self.size_width = QtWidgets.QLineEdit(self.verticalLayoutWidget)
- self.size_width.setObjectName("size_width")
- self.horizontalLayout_2.addWidget(self.size_width)
- self.size_height = QtWidgets.QLineEdit(self.verticalLayoutWidget)
- self.size_height.setObjectName("size_height")
- self.horizontalLayout_2.addWidget(self.size_height)
- self.verticalLayout.addLayout(self.horizontalLayout_2)
- self.horizontalLayout = QtWidgets.QHBoxLayout()
- self.horizontalLayout.setObjectName("horizontalLayout")
- self.label = QtWidgets.QLabel(self.verticalLayoutWidget)
- self.label.setObjectName("label")
- self.horizontalLayout.addWidget(self.label)
- self.coords_y = QtWidgets.QLineEdit(self.verticalLayoutWidget)
- self.coords_y.setText("")
- self.coords_y.setObjectName("coords_y")
- self.horizontalLayout.addWidget(self.coords_y)
- self.coords_x = QtWidgets.QLineEdit(self.verticalLayoutWidget)
- self.coords_x.setObjectName("coords_x")
- self.horizontalLayout.addWidget(self.coords_x)
- self.pushButton = QtWidgets.QPushButton(self.verticalLayoutWidget)
- self.pushButton.setObjectName("pushButton")
- self.horizontalLayout.addWidget(self.pushButton)
- self.verticalLayout.addLayout(self.horizontalLayout)
- self.image_cont = QtWidgets.QLabel(self.centralwidget)
- self.image_cont.setGeometry(QtCore.QRect(130, 40, 511, 371))
- self.image_cont.setText("")
- self.image_cont.setObjectName("image_cont")
- MainWindow.setCentralWidget(self.centralwidget)
- self.menubar = QtWidgets.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
- self.menubar.setObjectName("menubar")
- MainWindow.setMenuBar(self.menubar)
- self.statusbar = QtWidgets.QStatusBar(MainWindow)
- self.statusbar.setObjectName("statusbar")
- MainWindow.setStatusBar(self.statusbar)
- self.retranslateUi(MainWindow)
- QtCore.QMetaObject.connectSlotsByName(MainWindow)
- def retranslateUi(self, MainWindow):
- _translate = QtCore.QCoreApplication.translate
- MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
- self.label_3.setText(_translate("MainWindow", "Size:"))
- self.label.setText(_translate("MainWindow", "Your coords:"))
- self.pushButton.setText(_translate("MainWindow", "show"))
- class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
- def __init__(self):
- # Это здесь нужно для доступа к переменным, методам
- # и т.д. в файле design.py
- super().__init__()
- self.setupUi(self) # Это нужно для инициализации нашего дизайна
- self.pushButton.clicked.connect(lambda: self.show_map())
- self.spn = 0
- 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]
- self.max_x = 180
- self.min_x = -180
- self.max_y = 85
- self.min_y = -85
- def show_map(self):
- coord_y = self.coords_y.text()
- coord_x = self.coords_x.text()
- size_x = self.size_width.text()
- size_y = self.size_height.text()
- urllib.request.urlretrieve(
- f"https://static-maps.yandex.ru/1.x/?ll={coord_x},{coord_y}&size={size_x},{size_y}&spn={self.spn_list[self.spn]},{self.spn_list[self.spn]}&l=map", "map.png")
- map = QtGui.QPixmap("map.png")
- self.image_cont.setPixmap(map)
- self.show()
- def increase_zoom(self):
- if self.spn > 0:
- self.spn -= 1
- def decrease_zoom(self):
- if self.spn < len(self.spn_list)-1:
- self.spn += 1
- def move_left(self):
- if self.min_x < float(self.coords_x.text()):
- self.coords_x.setText(str(float(self.coords_x.text())-(self.spn_list[self.spn]*3)))
- def move_right(self):
- if float(self.coords_x.text()) < self.max_x:
- self.coords_x.setText(str(float(self.coords_x.text())+(self.spn_list[self.spn]*3)))
- def move_down(self):
- if self.min_y < float(self.coords_y.text()):
- self.coords_y.setText(str(float(self.coords_y.text()) - (self.spn_list[self.spn]*1.5)))
- def move_up(self):
- if float(self.coords_y.text()) < self.max_y:
- self.coords_y.setText(str(float(self.coords_y.text()) + (self.spn_list[self.spn]*1.5)))
- def keyPressEvent(self, event):
- if event.key() == QtCore.Qt.Key.Key_PageUp:
- self.increase_zoom()
- self.show_map()
- elif event.key() == QtCore.Qt.Key.Key_PageDown:
- self.decrease_zoom()
- self.show_map()
- elif event.key() == QtCore.Qt.Key.Key_W:
- self.move_up()
- self.show_map()
- elif event.key() == QtCore.Qt.Key.Key_A:
- self.move_left()
- self.show_map()
- elif event.key() == QtCore.Qt.Key.Key_S:
- self.move_down()
- self.show_map()
- elif event.key() == QtCore.Qt.Key.Key_D:
- self.move_right()
- self.show_map()
- print(f"x - {self.coords_x.text()}; y - {self.coords_y.text()}")
- def main():
- app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication
- window = ExampleApp() # Создаём экземпляр класса ExampleApp
- window.show() # Показываем окно
- app.exec() # и запускаем приложение
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement