/
Pisec
/
Meteo
Обзор
Документация
Войти
/
Pisec
/
Meteo
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
modal_window.py
63 строки
2 KB
Pisec
create: modal_window.py
08 мар 2026, 17:41
Верифицирован
08 мар 2026, 17:41
6880690
Код
Авторство
О чём код?
# -*- coding: utf-8 -*- from PyQt5.QtWidgets import QDialog, QLabel, QLineEdit, QPushButton, QVBoxLayout, QMessageBox from PyQt5.QtCore import Qt class InputCoordinatesDialog(QDialog): def __init__(self, parent=None): super(InputCoordinatesDialog, self).__init__(parent) self.setWindowTitle("Ввод координат") self.setModal(True) # Макет окна main_layout = QVBoxLayout() # Метки для пояснения lbl_latitude = QLabel("Широта:", alignment=Qt.AlignLeft | Qt.AlignVCenter) lbl_longitude = QLabel("Долгота:", alignment=Qt.AlignLeft | Qt.AlignVCenter) # Поля ввода self.lat_edit = QLineEdit() self.lon_edit = QLineEdit() # Кнопка ОК btn_ok = QPushButton("Получить погоду") btn_ok.clicked.connect(self.validate_and_close) # Собираем элементы вместе main_layout.addWidget(lbl_latitude) main_layout.addWidget(self.lat_edit) main_layout.addWidget(lbl_longitude) main_layout.addWidget(self.lon_edit) main_layout.addWidget(btn_ok) self.setLayout(main_layout) def validate_and_close(self): """ Проверяет введённые координаты и закрывает окно """ try: lat = float(self.lat_edit.text()) lon = float(self.lon_edit.text()) # Проверка допустимых границ координат Земли if not (-90 <= lat <= 90): raise ValueError("Широта должна находиться между -90 и 90 градусами.") if not (-180 <= lon <= 180): raise ValueError("Долгота должна находиться между -180 и 180 градусами.") # Закрываем окно и принимаем введённые значения self.accept() except ValueError as err: QMessageBox.warning(self, "Ошибка", str(err), QMessageBox.Ok) @staticmethod def get_coordinates(parent=None): dialog = InputCoordinatesDialog(parent) result = dialog.exec_() if result == QDialog.Accepted: lat = float(dialog.lat_edit.text()) lon = float(dialog.lon_edit.text()) return lat, lon else: return None, None