Skip to content

Commit a137241

Browse files
committed
自己编写库加载字体
更改self._callback方法 UserInterface.py:79 FIXME
1 parent 1459f27 commit a137241

3 files changed

Lines changed: 23 additions & 9 deletions

File tree

Gui/UserInterface.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from Gui.ScanBarGui import ScanBar
66
from Gui.ServerListGui import ServerList
77
from Gui.SettingsFrame import SettingsFrame
8+
from Libs.Vars import main_thread_over
89
from Gui.Widgets import *
910
from Libs.Vars import *
1011

@@ -14,14 +15,14 @@ def set_default_font():
1415

1516

1617
def load_unifont():
17-
from pyglet.font import add_file
18+
from Libs.FontLoader import add_font
1819

19-
if not exists("assets/Unifont.otf"): # 若字体文件不存在则退出
20+
try:
21+
add_font("assets/Unifont.otf")
22+
except FileNotFoundError: # 若字体文件不存在则退出
2023
print("Unifont字体文件丢失", file=stderr)
2124
return
2225

23-
add_file("assets/Unifont.otf")
24-
2526

2627
class Title(Label):
2728
def __init__(self, master: Misc):
@@ -75,6 +76,7 @@ def set_icon(self):
7576
print("图标文件丢失", file=stderr)
7677

7778
def on_delete_window(self):
79+
# FIXME 扫描时结束任务会报错
7880
# user_settings_loader.configs['theme_name'] = Style().theme_use()
7981
self.scan_bar.close_save_config()
8082
UserSettingsSaver.save_user_configs(user_settings_loader)

Libs/FontLoader.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import ctypes
2+
from ctypes import wintypes
3+
4+
# 加载GDI库
5+
gdi32 = ctypes.WinDLL("gdi32")
6+
FR_PRIVATE = ctypes.c_int(1)
7+
8+
9+
def add_font(font_path: str) -> None:
10+
gdi32.AddFontResourceExW(font_path, FR_PRIVATE, None)

Network/Scanner.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,17 @@ def stop_and_wait(self):
101101

102102
def scan_a_port(self, host: str, port: int, callback: Any):
103103
raw_info = Port(host, port, self.timeout).get_server_info()
104-
if raw_info["status"] == "online":
105-
Thread(target=callback, args=(ServerInfo(raw_info["info"]),)).start()
106-
return
107-
Thread(target=self._callback, args=(raw_info, callback)).start()
104+
Thread(target=self._callback, args=(raw_info, callback), daemon=True).start()
108105

109106
def _callback(self, raw_info, callback: Any):
110107
with self.callback_count_lock:
111108
self.callback_count += 1
112-
callback(raw_info)
109+
try:
110+
if raw_info["status"] == "online":
111+
raw_info = ServerInfo(raw_info["info"])
112+
callback(raw_info)
113+
except RuntimeError: # TK窗口已销毁
114+
pass
113115
with self.callback_count_lock:
114116
self.callback_count -= 1
115117

0 commit comments

Comments
 (0)