Skip to content

Commit d27c43e

Browse files
authored
Add files via upload
Signed-off-by: CJR <[email protected]>
1 parent ef58ade commit d27c43e

File tree

1 file changed

+131
-50
lines changed

1 file changed

+131
-50
lines changed

Weather.py

+131-50
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
# -*- coding: UTF-8 -*-
2-
# Copyright (C) 2024 Chen Junren, Inc. All Rights Reserved
3-
# @Author : Chen Junren
4-
# @Project : Weather
5-
# @Product : Pycharm v2022.3.3
6-
# @File : Weather.py
1+
"""
2+
-*- coding: UTF-8 -*-
3+
Copyright (C) 2024 Chen Junren, Inc. All Rights Reserved
4+
@Author : Chen Junren
5+
@Project : Weather
6+
@Product : Pycharm v2022.3.3
7+
@File : Weather.py
8+
"""
9+
710
import datetime
811
import json
912
import locale
@@ -15,6 +18,7 @@
1518
import webbrowser
1619
from json import JSONDecodeError
1720

21+
import pyperclip
1822
import requests
1923
from PyQt5 import QtCore, QtGui, QtWidgets
2024
from PyQt5.QtCore import Qt
@@ -91,7 +95,7 @@ def get_code(table, city):
9195
return table[city]
9296

9397

94-
def URL(url: str):
98+
def URL(url: str) -> None:
9599
"""
96100
Open the url in browser.
97101
:param url: The url.
@@ -100,7 +104,18 @@ def URL(url: str):
100104
webbrowser.open(url)
101105

102106

103-
def Open(file: str):
107+
def copy(self, text: str) -> None:
108+
"""
109+
Copy the text
110+
:param self: Ui Form
111+
:param text: Text to copy
112+
:return: None
113+
"""
114+
pyperclip.copy(text)
115+
self.pushButton.setText("复制成功")
116+
117+
118+
def Open(file: str) -> None:
104119
"""
105120
Open the file.
106121
:param file: The path of the file.
@@ -130,7 +145,6 @@ def get_weather_1(city: str, code: str, dates: QtCore.QDate):
130145
global key
131146
key = read_settings().get("key")
132147
html = f"https://devapi.qweather.com/v7/weather/7d?key={key}&location={code}"
133-
# hef = f"https://devapi.qweather.com/v7/weather/now?key={key}&location={code}"
134148
air = f"https://devapi.qweather.com/v7/air/5d?key={key}&location={code}"
135149
warning = f"https://devapi.qweather.com/v7/warning/now?key={key}&location={code}"
136150
info = requests.get(html)
@@ -139,7 +153,6 @@ def get_weather_1(city: str, code: str, dates: QtCore.QDate):
139153
air.encoding = "utf-8"
140154
warning = requests.get(warning)
141155
warning.encoding = "utf-8"
142-
# logging.info(info,info2,air,warning)
143156
info_json = info.json()
144157
# print(info_json)
145158
# info_2_json = info2.json()
@@ -197,7 +210,7 @@ def get_weather_1(city: str, code: str, dates: QtCore.QDate):
197210
date = f"日 期:{we_listed['fxDate']}\n"
198211
temp = (
199212
f"温 度:最高温{we_listed['tempMax']}\n"
200-
f" 最低温{we_listed['tempMin']}\n"
213+
f" 最低温{we_listed['tempMin']}\n"
201214
)
202215
# temp_now = f"实时温度:{info_2_json['now']['temp']}℃\n"
203216
humidity = f"湿 度:{we_listed['humidity']}%\n"
@@ -278,20 +291,32 @@ def get_weather_5(code2: str):
278291

279292

280293
class Ui_Form(object):
294+
"""
295+
The Main Window.
296+
"""
297+
281298
def setupUi(self, Form):
299+
"""
300+
Set up UI.
301+
:param Form:
302+
:return:
303+
"""
282304
Form.setObjectName("Form")
283-
Form.resize(599, 483)
305+
Form.resize(600, 480)
284306
font = QtGui.QFont()
285307
font.setFamily("荆南麦圆体")
286308
Form.setFont(font)
287309
Form.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
288310
self.layoutWidget = QtWidgets.QWidget(Form)
289-
self.layoutWidget.setGeometry(QtCore.QRect(50, 70, 301, 62))
311+
self.layoutWidget.setGeometry(QtCore.QRect(50, 70, 300, 60))
290312
self.layoutWidget.setObjectName("layoutWidget")
313+
self.setWindowIcon(QtGui.QIcon("Weather.png"))
291314
self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
292315
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
293316
self.verticalLayout.setObjectName("verticalLayout")
317+
294318
self.label = QtWidgets.QLabel(self.layoutWidget)
319+
295320
font = QtGui.QFont()
296321
font.setFamily("荆南麦圆体")
297322
font.setPointSize(16)
@@ -315,11 +340,13 @@ def setupUi(self, Form):
315340
self.lineEdit.setObjectName("lineEdit")
316341
self.horizontalLayout.addWidget(self.lineEdit)
317342
self.verticalLayout.addLayout(self.horizontalLayout)
318-
self.label_3 = QtWidgets.QLabel(Form)
319-
self.label_3.setGeometry(QtCore.QRect(380, 300, 160, 30))
320-
self.label_3.setMinimumSize(QtCore.QSize(160, 30))
321-
self.label_3.setText("")
322-
self.label_3.setObjectName("label_3")
343+
self.label_114 = QtWidgets.QLabel(Form)
344+
# self.layoutWidget
345+
self.label_114.setAlignment(Qt.AlignCenter)
346+
self.label_114.setGeometry(QtCore.QRect(200, 400, 160, 30))
347+
self.label_114.setMinimumSize(QtCore.QSize(160, 30))
348+
self.label_114.setText("")
349+
self.label_114.setObjectName("label_114")
323350
self.verticalLayoutWidget = QtWidgets.QWidget(Form)
324351
self.verticalLayoutWidget.setGeometry(QtCore.QRect(380, 70, 160, 301))
325352
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
@@ -394,17 +421,37 @@ def __init__(self, city, infos):
394421
None
395422
"""
396423
super().__init__()
424+
# layout1 = QtWidgets.QVBoxLayout()
425+
# layout1.setAlignment(QtCore.Qt.AlignHCenter | Qt.AlignVCenter)
426+
# widget = QtWidgets.QWidget()
397427
layout = QtWidgets.QHBoxLayout()
428+
layout1 = QtWidgets.QHBoxLayout()
429+
layout.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
430+
layout1.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
431+
432+
widget = QtWidgets.QWidget()
433+
widget.setLayout(layout1)
434+
widget1 = QtWidgets.QWidget()
435+
widget1.setLayout(layout)
436+
layout2 = QtWidgets.QVBoxLayout()
437+
layout2.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
438+
layout2.addWidget(widget1)
439+
layout2.addWidget(widget)
440+
# widget.setLayout(layout)
441+
# layout1.setSizeConstraint()
442+
# widget.setFixedSize(960,80)
443+
398444
self.setWindowTitle(f"五日天气 - {city}市")
399-
self.setLayout(layout)
400-
self.setFixedSize(1000, 400)
401-
self.resize(1000, 400)
445+
self.setLayout(layout2)
446+
self.setFixedSize(960, 480)
447+
self.resize(960, 480)
402448
self.setWindowIcon(QtGui.QIcon("Weather.png"))
403449
font = QtGui.QFont()
404450
font.setPointSize(12)
405451
font.setFamily("荆南麦圆体")
406452
self.setFont(font)
407453
self.label = QtWidgets.QLabel()
454+
408455
layout.addWidget(self.label)
409456
self.label.setText(infos[0])
410457
self.label.setAlignment(QtCore.Qt.AlignLeft | Qt.AlignVCenter)
@@ -424,6 +471,17 @@ def __init__(self, city, infos):
424471
layout.addWidget(self.label4)
425472
self.label4.setText(infos[4])
426473
self.label4.setAlignment(QtCore.Qt.AlignLeft | Qt.AlignVCenter)
474+
self.pushButton = QtWidgets.QPushButton()
475+
self.pushButton.setFixedSize(160, 40)
476+
self.pushButton.setText("复制")
477+
layout1.addWidget(self.pushButton)
478+
479+
self.pushButton.clicked.connect(
480+
lambda: copy(
481+
self, str("".join([f"{str(x)}\n" for x in infos]).replace(" ", ""))
482+
)
483+
)
484+
# layout1.addWidget(self.pushButton)
427485

428486

429487
class OneDay(QWidget):
@@ -443,27 +501,50 @@ def __init__(self, city, dated, index):
443501
None
444502
"""
445503
super().__init__()
446-
layout = QtWidgets.QHBoxLayout()
504+
layout = QtWidgets.QVBoxLayout()
505+
layout1 = QtWidgets.QVBoxLayout()
447506
self.setWindowTitle(f"{dated} - 天气 - {city}市")
448507
self.setLayout(layout)
449-
self.setFixedSize(700, 300)
450-
self.resize(700, 300)
508+
self.setFixedSize(700, 400)
509+
self.resize(700, 400)
451510
self.setWindowIcon(QtGui.QIcon("Weather.png"))
452511
font = QtGui.QFont()
453512
font.setPointSize(12)
454513
font.setFamily("荆南麦圆体")
455514
self.setFont(font)
456-
self.label = QtWidgets.QLabel()
457-
self.label.setAlignment(Qt.AlignCenter)
458-
self.label.setWordWrap(True)
459515

460-
layout.addWidget(self.label)
461-
# print('Weather_JSON:::::',index)
516+
self.label = QtWidgets.QTextEdit()
517+
self.label.setReadOnly(True)
518+
# self.label.setScaledContents(True)
519+
layout.setGeometry(QtCore.QRect(150, 60, 400, 280))
520+
# layout.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
521+
# self.label.setWordWrap(True)
462522
weather_json = index
463-
# print(weather_json)
464523
self.label.setText(weather_json)
465-
self.label.setAlignment(QtCore.Qt.AlignLeft | Qt.AlignVCenter)
466-
self.label1 = QtWidgets.QLabel()
524+
self.pushButton = QtWidgets.QPushButton()
525+
self.pushButton.setFixedSize(160, 40)
526+
self.pushButton.setText("复制")
527+
self.label.setFixedSize(int(self.width() * 2 / 3), 280)
528+
self.label.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
529+
# layout1.setAlignment(Qt.AlignCenter)
530+
self.pushButton.clicked.connect(
531+
lambda: copy(self, str(weather_json).replace(" ", ""))
532+
)
533+
widget1 = QtWidgets.QWidget()
534+
widget = QtWidgets.QWidget()
535+
layout.addWidget(widget)
536+
layout.addWidget(widget1)
537+
widget.setLayout(layout1)
538+
layout2 = QtWidgets.QVBoxLayout()
539+
widget1.setLayout(layout2)
540+
layout1.addWidget(self.label)
541+
layout2.addWidget(self.pushButton)
542+
layout2.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
543+
544+
layout1.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
545+
layout.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
546+
547+
# self.pushButton.
467548

468549

469550
class Helps(QWidget):
@@ -498,7 +579,7 @@ def __init__(self):
498579

499580
layout.addWidget(self.label)
500581
self.label.setText(
501-
"请先输入城市再查询\n按按钮查询天气\n按回车查询单日天气\n按I键打开该页面\n按S键最小化窗口"
582+
"请先输入城市再查询\n按按钮查询天气\n按回车查询单日天气\n按ESC键最小化窗口"
502583
)
503584

504585
self.pushButton_5 = QtWidgets.QPushButton()
@@ -527,7 +608,7 @@ class Weather(QWidget, Ui_Form):
527608
table: A dictionary containing city codes.
528609
529610
lineEdit: A QLineEdit widget for entering the city name.
530-
label_3: A QLabel widget for displaying status messages.
611+
label_114: A QLabel widget for displaying status messages.
531612
532613
Methods:
533614
__init__: Initializes the weather application.
@@ -579,7 +660,7 @@ def getWeather_1(self):
579660
err_msg = "输入错误"
580661
# logging.info(citycode)
581662
# logging.info(f"错误:{city}")
582-
self.label_3.setText("正在查询中...")
663+
self.label_114.setText("正在查询中...")
583664
if not err_msg:
584665
# logging.info("Not ERROR MESSAGE")
585666
try:
@@ -613,10 +694,10 @@ def getWeather_1(self):
613694
self.one = OneDay(city, infos[1], infos[0])
614695
self.one.show()
615696
# self.textEdit.setText()
616-
self.label_3.setText("查询成功")
617-
self.label_3.setText("查询成功")
697+
self.label_114.setText("查询成功")
698+
self.label_114.setText("查询成功")
618699
else:
619-
self.label_3.setText(f"查询失败 {err_msg}")
700+
self.label_114.setText(f"查询失败 {err_msg}")
620701
# self.textEdit.setText("")
621702

622703
self.lineEdit.clear()
@@ -650,7 +731,7 @@ def getWeather_5(self):
650731
except Exception as e:
651732
logging.error(repr(e))
652733
err_msg = "未知错误"
653-
self.label_3.setText("正在查询中...")
734+
self.label_114.setText("正在查询中...")
654735
if not err_msg:
655736
try:
656737
# global info
@@ -681,9 +762,9 @@ def getWeather_5(self):
681762
self.w = FiveDays(city, infos=FiveD)
682763
self.w.show()
683764
# self.textEdit.setText()
684-
self.label_3.setText("查询成功")
765+
self.label_114.setText("查询成功")
685766
else:
686-
self.label_3.setText(f"查询失败 {err_msg}")
767+
self.label_114.setText(f"查询失败 {err_msg}")
687768
# self.textEdit.setText("")
688769

689770
self.lineEdit.clear()
@@ -699,20 +780,20 @@ def keyPressEvent(self, e):
699780
None
700781
701782
"""
702-
if e.key() == Qt.Key_1:
783+
if e.key() == Qt.Key_Enter:
703784
self.getWeather_1()
704-
if e.key() == Qt.Key_5:
705-
self.getWeather_5()
706-
if e.key() == Qt.Key_S:
785+
# if e.key() == Qt.Key_Shift:
786+
# self.getWeather_5()
787+
if e.key() == Qt.Key_Escape:
707788
self.showMinimized()
708789
# if e.key() == Qt.Key_R:
709-
# self.label_3.setText("打开设置文件")
790+
# self.label_114.setText("打开设置文件")
710791
# os.system(".\\settings.txt")
711792
# logging.info("打开设置文件")
712-
if e.key() == Qt.Key_I:
713-
self.help1 = Helps()
714-
self.help1.show()
715-
logging.info("显示帮助")
793+
# if e.key() == Qt.Key_Control:
794+
# self.help1 = Helps()
795+
# self.help1.show()
796+
# logging.info("显示帮助")
716797

717798

718799
if __name__ == "__main__":

0 commit comments

Comments
 (0)