gcode预览测试

This commit is contained in:
2026-05-14 20:21:16 +08:00
parent 65f221a5d8
commit 837996c436
17 changed files with 1363 additions and 296 deletions

71
main.py
View File

@@ -31,6 +31,7 @@ class MainWindow(QWidget):
self.wifi_manager = WifiManager()
self._last_network_check = 0.0
self._is_network_connected = False
self._clock_has_synced = False # 是否曾成功获取到时间(断网后继续显示)
self.init_ui()
# 定时刷新风扇状态显示
@@ -58,8 +59,35 @@ class MainWindow(QWidget):
api_key=self.config_parser.api_key
)
def _signal_to_bars(self, signal_val):
"""将信号强度转换为条形图标字符串
支持 dBm负值如 -45和百分比0-100nmcli 格式)
"""
if signal_val is None:
return "⬜⬜⬜"
if signal_val < 0:
# dBm 格式
if signal_val >= -50:
return "■■■"
elif signal_val >= -60:
return "■■□"
elif signal_val >= -70:
return "■□□"
else:
return "□□□"
else:
# 百分比格式 (0-100)
if signal_val >= 75:
return "■■■"
elif signal_val >= 50:
return "■■□"
elif signal_val >= 25:
return "■□□"
else:
return "□□□"
def _update_top_bar(self):
"""更新风扇状态横条显示"""
"""更新风扇/网络状态横条显示"""
s = self.auto_fan_status
temp = f"{s.cpu_temp:.1f}°C" if s.is_auto_fan_service_running else "--.-°C"
speed_pct = min(s.fan_speed / 255 * 100, 100)
@@ -79,17 +107,42 @@ class MainWindow(QWidget):
f"background-color: #2a2a2a; color: {color}; "
f"font-size: 18px; font-weight: 600; padding: 4px 16px;"
)
load_color = "#a0d8a0" if s.cpu_load < 1.0 else ("#e8a060" if s.cpu_load < 2.0 else "#e86c60")
cpu_load_str = f"<span style='color:{load_color}'>{s.cpu_load:.2f}</span><span>/4.0</span>"
self._fan_label.setText(
f"🌡 {temp} {state} 𖣘 {speed} {rpm}"
f"🌡 {temp} {state} 𖣘 {speed} {rpm} 🖥 {cpu_load_str}"
)
self._fan_label.setTextFormat(Qt.TextFormat.RichText)
# 更新时钟(有网络时显示)
if self._check_network():
# --- WiFi 状态指示 ---
is_connected = self._check_network()
if is_connected:
try:
status = self.wifi_manager.get_current_status()
raw_signal = status.get("signal_level")
signal_dbm = int(raw_signal) if raw_signal else None
except Exception:
signal_dbm = None
bars = self._signal_to_bars(signal_dbm)
self._wifi_label.setText(f"Signal: {bars}")
self._wifi_label.setStyleSheet("color: #a0d8a0; font-size: 18px; font-weight: 600;")
else:
self._wifi_label.setText("No Signal")
self._wifi_label.setStyleSheet("color: #e86c60; font-size: 18px; font-weight: 600;")
# --- 时钟(有网络时更新;断网后保留最后一次的时间) ---
if is_connected:
now = datetime.now()
self._clock_label.setText(now.strftime("%H:%M:%S"))
if not self._clock_has_synced:
self._clock_has_synced = True
self._clock_label.show()
else:
self._clock_label.hide()
# 从未同步过则隐藏,否则保留上次时间
if self._clock_has_synced:
self._clock_label.show()
else:
self._clock_label.hide()
def init_ui(self):
# 整体布局
@@ -124,7 +177,13 @@ class MainWindow(QWidget):
top_layout.addWidget(self._fan_label)
top_layout.addStretch()
# 时钟标签(有网络时显示)
# WiFi 状态指示
self._wifi_label = QLabel("📶 --")
self._wifi_label.setAlignment(Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter)
self._wifi_label.setStyleSheet("color: #a0d8a0; font-size: 18px; font-weight: 600;")
top_layout.addWidget(self._wifi_label)
# 时钟标签(有网络时显示,获取过一次后断网也不隐藏)
self._clock_label = QLabel("--:--:--")
self._clock_label.setAlignment(Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter)
self._clock_label.setStyleSheet("color: #a0d8a0; font-size: 18px; font-weight: 600;")