天气悬浮窗口fix

Maziang 5 months ago
parent 7a85f36544
commit efaf1ae33c

@ -39,7 +39,7 @@ class WeatherFloatingWidget(QDialog):
"""设置UI界面"""
# 设置窗口属性
self.setWindowTitle("天气")
self.setFixedSize(400, 320) # 增加窗口尺寸
self.setFixedSize(360, 280) # 调整窗口尺寸使其更紧凑
# 创建主框架,用于实现圆角和阴影效果
self.main_frame = QFrame()
@ -52,8 +52,8 @@ class WeatherFloatingWidget(QDialog):
# 内容布局
content_layout = QVBoxLayout(self.main_frame)
content_layout.setContentsMargins(15, 15, 15, 15) # 减小内边距
content_layout.setSpacing(10) # 减小间距
content_layout.setContentsMargins(10, 10, 10, 10) # 减小内边距使布局更紧凑
content_layout.setSpacing(6) # 减小间距使布局更紧凑
# 设置最小尺寸策略
self.main_frame.setMinimumSize(380, 300)
@ -65,6 +65,8 @@ class WeatherFloatingWidget(QDialog):
self.title_label.setFont(QFont("Arial", 12, QFont.Bold))
title_layout.addWidget(self.title_label)
title_layout.addStretch()
# 添加一个小的固定空间,使关闭按钮向左移动
title_layout.addSpacing(25) # 向左移动25个单位
# 关闭按钮
self.close_btn = QPushButton("×")
@ -82,27 +84,27 @@ class WeatherFloatingWidget(QDialog):
# 天气图标和温度显示区域
weather_display_layout = QHBoxLayout()
weather_display_layout.setSpacing(8) # 适当间距
weather_display_layout.setSpacing(5) # 减小间距使布局更紧凑
weather_display_layout.setContentsMargins(2, 2, 2, 2) # 减小内边距
self.weather_icon_label = QLabel("🌞")
self.weather_icon_label.setFont(QFont("Arial", 28))
self.weather_icon_label.setFont(QFont("Arial", 24)) # 稍微减小字体大小
self.weather_icon_label.setAlignment(Qt.AlignCenter)
self.weather_icon_label.setFixedSize(60, 60)
self.weather_icon_label.setFixedSize(50, 50) # 减小尺寸
weather_display_layout.addWidget(self.weather_icon_label)
# 温度和城市信息
temp_city_layout = QVBoxLayout()
temp_city_layout.setSpacing(8) # 增加间距
temp_city_layout.setSpacing(4) # 减小间距使布局更紧凑
temp_city_layout.setContentsMargins(0, 0, 0, 0)
self.temperature_label = QLabel("25°C")
self.temperature_label.setFont(QFont("Arial", 20, QFont.Bold))
self.temperature_label.setFont(QFont("Arial", 18, QFont.Bold)) # 稍微减小字体大小
self.temperature_label.setObjectName("temperatureLabel")
temp_city_layout.addWidget(self.temperature_label)
self.city_label = QLabel("北京")
self.city_label.setFont(QFont("Arial", 12))
self.city_label.setFont(QFont("Arial", 11)) # 稍微减小字体大小
self.city_label.setObjectName("cityLabel")
temp_city_layout.addWidget(self.city_label)
@ -113,23 +115,23 @@ class WeatherFloatingWidget(QDialog):
# 天气描述
self.weather_desc_label = QLabel("晴天")
self.weather_desc_label.setFont(QFont("Arial", 12))
self.weather_desc_label.setFont(QFont("Arial", 11)) # 稍微减小字体大小
self.weather_desc_label.setObjectName("weatherDescLabel")
self.weather_desc_label.setAlignment(Qt.AlignCenter)
content_layout.addWidget(self.weather_desc_label)
# 详细信息(湿度、风速)
details_layout = QHBoxLayout()
details_layout.setSpacing(10) # 适当间距
details_layout.setSpacing(6) # 减小间距使布局更紧凑
details_layout.setContentsMargins(2, 2, 2, 2) # 减小内边距
self.humidity_label = QLabel("湿度: 45%")
self.humidity_label.setFont(QFont("Arial", 11))
self.humidity_label.setFont(QFont("Arial", 10)) # 稍微减小字体大小
self.humidity_label.setObjectName("detailLabel")
details_layout.addWidget(self.humidity_label)
self.wind_label = QLabel("风速: 2级")
self.wind_label.setFont(QFont("Arial", 11))
self.wind_label.setFont(QFont("Arial", 10)) # 稍微减小字体大小
self.wind_label.setObjectName("detailLabel")
details_layout.addWidget(self.wind_label)
@ -137,7 +139,7 @@ class WeatherFloatingWidget(QDialog):
# 城市选择区域
city_layout = QHBoxLayout()
city_layout.setSpacing(10)
city_layout.setSpacing(6) # 减小间距使布局更紧凑
city_layout.setContentsMargins(0, 0, 0, 0)
self.city_combo = QComboBox()
@ -151,7 +153,7 @@ class WeatherFloatingWidget(QDialog):
'合肥', '福州', '南昌', '济南', '郑州', '长沙', '南宁', '海口', # 华东华中华南
'贵阳', '昆明', '拉萨', '兰州', '西宁', '银川', '乌鲁木齐' # 西南西北
])
self.city_combo.setFixedWidth(120) # 增加城市选择框宽度,与主窗口保持一致
self.city_combo.setFixedWidth(100) # 减小城市选择框宽度使布局更紧凑
city_layout.addWidget(self.city_combo)
city_layout.addStretch()
@ -160,17 +162,19 @@ class WeatherFloatingWidget(QDialog):
# 按钮区域
button_layout = QHBoxLayout()
button_layout.setSpacing(10)
button_layout.setSpacing(6) # 减小间距使布局更紧凑
button_layout.setContentsMargins(0, 0, 0, 0)
self.refresh_btn = QPushButton("刷新")
self.refresh_btn.setObjectName("refreshButton")
self.refresh_btn.setFixedHeight(26) # 减小按钮高度
button_layout.addWidget(self.refresh_btn)
button_layout.addStretch()
self.detail_btn = QPushButton("详情")
self.detail_btn.setObjectName("detailButton")
self.detail_btn.setFixedHeight(26) # 减小按钮高度
button_layout.addWidget(self.detail_btn)
content_layout.addLayout(button_layout)
@ -209,56 +213,59 @@ class WeatherFloatingWidget(QDialog):
QLabel {{
color: {colors['text']};
background-color: transparent;
padding: 4px 6px;
margin: 2px;
padding: 3px 5px; // 适度增加padding使布局更舒适
margin: 1px;
}}
QLabel#temperatureLabel {{
color: {colors['accent']};
font-size: 20px;
font-size: 19px; // 适度增大字体大小
font-weight: bold;
padding: 6px 8px;
margin: 3px;
padding: 5px 7px; // 适度增加padding使布局更舒适
margin: 2px;
}}
QLabel#cityLabel {{
color: {colors['text_secondary']};
font-size: 12px;
padding: 3px 5px;
margin: 2px;
font-size: 12px; // 适度增大字体大小
padding: 3px 5px; // 适度增加padding使布局更舒适
margin: 1px;
}}
QLabel#weatherDescLabel {{
color: {colors['text']};
font-size: 12px;
font-size: 12px; // 适度增大字体大小
font-weight: 500;
padding: 4px 6px;
margin: 2px;
padding: 3px 5px; // 适度增加padding使布局更舒适
margin: 1px;
}}
QLabel#detailLabel {{
color: {colors['text_secondary']};
font-size: 11px;
padding: 3px 5px;
margin: 2px;
font-size: 11px; // 适度增大字体大小
padding: 3px 5px; // 适度增加padding使布局更舒适
margin: 1px;
}}
QFrame#separator {{
background-color: {colors['border']};
}}
QPushButton#closeButton {{
background-color: transparent;
background-color: rgba(255, 255, 255, 0.1);
border: none;
color: {colors['text']};
font-size: 18px;
font-weight: bold;
border-radius: 6px;
padding: 2px 4px;
}}
QPushButton#closeButton:hover {{
background-color: #e81123;
color: white;
border-radius: 3px;
border-radius: 6px;
}}
QPushButton#refreshButton, QPushButton#detailButton {{
background-color: {colors['accent']};
color: white;
border: none;
border-radius: 6px;
padding: 6px 16px;
font-size: 11px;
border-radius: 6px; // 适度增加圆角
padding: 5px 14px; // 适度增加padding使按钮更舒适
font-size: 11px; // 适度增大字体大小
font-weight: 500;
}}
QPushButton#refreshButton:hover, QPushButton#detailButton:hover {{
@ -268,24 +275,24 @@ class WeatherFloatingWidget(QDialog):
background-color: {colors['surface']};
color: {colors['text']};
border: 1px solid {colors['border']};
border-radius: 6px;
padding: 4px 8px;
font-size: 11px;
border-radius: 6px; // 适度增加圆角
padding: 4px 7px; // 适度增加padding使布局更舒适
font-size: 11px; // 适度增大字体大小
font-weight: 500;
min-height: 24px;
min-height: 24px; // 适度增加最小高度使布局更舒适
}}
QComboBox#cityCombo:hover {{
border-color: {colors['accent']};
}}
QComboBox#cityCombo::drop-down {{
border: none;
width: 15px;
width: 14px; // 适度增加宽度
}}
QComboBox#cityCombo::down-arrow {{
image: none;
border-left: 3px solid transparent;
border-right: 3px solid transparent;
border-top: 5px solid {colors['text']};
border-left: 2px solid transparent;
border-right: 2px solid transparent;
border-top: 5px solid {colors['text']}; // 适度增加箭头大小
}}
""")
else:
@ -294,8 +301,8 @@ class WeatherFloatingWidget(QDialog):
QFrame#mainFrame {{
background-color: {colors['surface']};
border: 1px solid {colors['border']};
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
border-radius: 10px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}}
QLabel {{
color: {colors['text']};
@ -313,7 +320,7 @@ class WeatherFloatingWidget(QDialog):
QLabel#cityLabel {{
color: {colors['text_secondary']};
font-size: 12px;
padding: 3px 5px;
padding: 4px 6px;
margin: 2px;
}}
QLabel#weatherDescLabel {{
@ -326,30 +333,33 @@ class WeatherFloatingWidget(QDialog):
QLabel#detailLabel {{
color: {colors['text_secondary']};
font-size: 11px;
padding: 3px 5px;
padding: 4px 6px;
margin: 2px;
}}
QFrame#separator {{
background-color: {colors['border']};
}}
QPushButton#closeButton {{
background-color: transparent;
background-color: rgba(0, 0, 0, 0.05);
border: none;
color: {colors['text']};
font-size: 18px;
font-weight: bold;
border-radius: 6px;
padding: 2px 4px;
}}
QPushButton#closeButton:hover {{
background-color: #e81123;
color: white;
border-radius: 3px;
border-radius: 6px;
}}
QPushButton#refreshButton, QPushButton#detailButton {{
background-color: {colors['accent']};
color: white;
border: none;
border-radius: 6px;
padding: 6px 16px;
font-size: 11px;
border-radius: 6px; // 适度增加圆角
padding: 5px 14px; // 适度增加padding使按钮更舒适
font-size: 11px; // 适度增大字体大小
font-weight: 500;
}}
QPushButton#refreshButton:hover, QPushButton#detailButton:hover {{
@ -359,24 +369,24 @@ class WeatherFloatingWidget(QDialog):
background-color: {colors['surface']};
color: {colors['text']};
border: 1px solid {colors['border']};
border-radius: 6px;
padding: 4px 8px;
font-size: 11px;
border-radius: 6px; // 适度增加圆角
padding: 4px 7px; // 适度增加padding使布局更舒适
font-size: 11px; // 适度增大字体大小
font-weight: 500;
min-height: 24px;
min-height: 24px; // 适度增加最小高度使布局更舒适
}}
QComboBox#cityCombo:hover {{
border-color: {colors['accent']};
}}
QComboBox#cityCombo::drop-down {{
border: none;
width: 15px;
width: 14px; // 适度增加宽度
}}
QComboBox#cityCombo::down-arrow {{
image: none;
border-left: 3px solid transparent;
border-right: 3px solid transparent;
border-top: 5px solid {colors['text']};
border-left: 2px solid transparent;
border-right: 2px solid transparent;
border-top: 5px solid {colors['text']}; // 适度增加箭头大小
}}
""")

Loading…
Cancel
Save