forked from yzt000000/device_config_python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
78 lines (67 loc) · 2.78 KB
/
utils.py
File metadata and controls
78 lines (67 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# utils.py
import os
import glob
import tempfile
from PyQt5.QtWidgets import QMessageBox
from PyQt5.QtCore import QProcess
def find_gvim():
possible_patterns = [
r'C:\Program Files (x86)\Vim\vim*\gvim.exe',
r'C:\Program Files\Vim\vim*\gvim.exe',
r'D:\Program Files (x86)\Vim\vim*\gvim.exe',
r'D:\Program Files\Vim\vim*\gvim.exe',
r'E:\Program Files (x86)\Vim\vim*\gvim.exe',
r'E:\Program Files\Vim\vim*\gvim.exe'
]
for pattern in possible_patterns:
for path in glob.glob(pattern):
if os.path.isfile(path):
return path
return None
def edit_with_vi(self):
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.py')
temp_file_name = temp_file.name
temp_file.close()
gvim_location = find_gvim()
try:
with open(temp_file_name, 'w') as file:
file.write(self.script_input.toPlainText())
except Exception as e:
QMessageBox.critical(self, '错误', f'无法写入临时文件: {str(e)}')
return
process = QProcess(self)
process.finished.connect(lambda exit_code, exit_status: on_vi_finished(self, temp_file_name, exit_code, exit_status))
process.start(gvim_location, ['-f', temp_file_name])
def on_vi_finished(self, temp_file_name, exit_code, exit_status):
if exit_code != 0:
QMessageBox.critical(self, '错误', f'vi 编辑器退出代码: {exit_code}')
return
try:
with open(temp_file_name, 'r') as file:
script = file.read()
self.script_input.setPlainText(script)
except Exception as e:
QMessageBox.critical(self, '错误', f'无法读取临时文件: {str(e)}')
try:
os.remove(temp_file_name)
except Exception as e:
QMessageBox.critical(self, '错误', f'无法删除临时文件: {str(e)}')
def update_temperature(self):
try:
register_address = 0xE0
data = self.usb_i2c.read(register_address)
temperature = (data / 255.0) * 505.78 - 272
self.temperature_label.setText(f'温度: <b> {temperature:.1f} </b>°C')
self.temperature_progress.setValue(int(temperature))
set_progress_bar_style(self, temperature)
self.append_output(f'温度读取自寄存器 0x{register_address:02X}: {temperature:.1f} °C\n')
except Exception as e:
QMessageBox.critical(self, '错误', f'读取温度时出错: {str(e)}')
def set_progress_bar_style(self, temperature):
temperature = max(-272, min(temperature, 233.78))
normalized_temp = (temperature + 272) / 505.78
red = int(255 * normalized_temp)
green = 0
blue = int(255 * (1 - normalized_temp))
color = f'rgb({red}, {green}, {blue})'
self.temperature_progress.setStyleSheet(f"QProgressBar::chunk {{ background-color: {color}; }}")