gcode预览测试
This commit is contained in:
71
main.py
71
main.py
@@ -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-100,nmcli 格式)
|
||||
"""
|
||||
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;")
|
||||
|
||||
Reference in New Issue
Block a user