Browse Source

feat: 捕获tkinter设置logo时的错误

SongZihuan 3 years ago
parent
commit
22f6a8c3ce
4 changed files with 21 additions and 5 deletions
  1. 1 1
      sql/mysql_db.py
  2. 9 2
      tk_ui/admin.py
  3. 5 1
      tk_ui/ranking.py
  4. 6 1
      tk_ui/station.py

+ 1 - 1
sql/mysql_db.py

@@ -127,7 +127,7 @@ class MysqlDB(HGSDatabase):
             self._lock.acquire()  # 上锁
             self._cursor.execute(sql)
         except pymysql.MySQLError:
-            print(f"{sql}")
+            print(f"sql='{sql}'")
             traceback.print_exc()
             return None
         finally:

+ 9 - 2
tk_ui/admin.py

@@ -2,6 +2,7 @@ import abc
 import tkinter as tk
 from tkinter import messagebox as msg
 from tkinter import ttk
+from _tkinter import TclError
 
 from conf import Config
 from core.garbage import GarbageBag
@@ -267,7 +268,10 @@ class AdminStation(AdminStationBase):
             self._window.resizable(False, False)
             self._window.protocol("WM_DELETE_WINDOW", lambda: self.main_exit())
             self._window.title('HGSSystem: Manage Station 加载中')
-            self._window.iconbitmap(Config.picture_d["logo-ico"])
+            try:
+                self._window.iconbitmap(Config.picture_d["logo-ico"])
+            except TclError:
+                pass
         else:
             self._window.title('HGSSystem: Manage Station')
 
@@ -573,7 +577,10 @@ class AdminStation(AdminStationBase):
     def __show_login_window(self):
         self.login_window: Optional[tk.Toplevel] = tk.Toplevel()
         self.login_window.title("HGSSystem Login")
-        self.login_window.iconbitmap(Config.picture_d["logo-ico"])
+        try:
+            self.login_window.iconbitmap(Config.picture_d["logo-ico"])
+        except TclError:
+            pass
 
         height = int(self._sys_height * (1 / 5))
         width = int(height * 2)

+ 5 - 1
tk_ui/ranking.py

@@ -1,5 +1,6 @@
 import abc
 import tkinter as tk
+from _tkinter import TclError
 from PIL import Image, ImageTk
 from math import ceil
 
@@ -241,7 +242,10 @@ class RankingStation(RankingStationBase):
         self.window.geometry(f'{self.width}x{self.height}')
         self.window['bg'] = Config.tk_win_bg
         self.window.resizable(False, False)
-        self.window.iconbitmap(Config.picture_d["logo-ico"])
+        try:
+            self.window.iconbitmap(Config.picture_d["logo-ico"])
+        except TclError:
+            pass
 
         self.bg_img = None
         self.bg_lb = tk.Label(self.window)

+ 6 - 1
tk_ui/station.py

@@ -7,6 +7,7 @@ import traceback
 import abc
 import tkinter as tk
 from tkinter import ttk
+from _tkinter import TclError
 import datetime
 from PIL import Image, ImageTk
 
@@ -681,7 +682,11 @@ class GarbageStation(GarbageStationBase):
         self._window.resizable(False, False)  # 禁止缩放
         self._window.protocol("WM_DELETE_WINDOW", lambda: self.show_exit())  # 设置标题栏[x]按钮
         self._window.overrideredirect(False)  # 显示标题栏
-        self._window.iconbitmap(Config.picture_d["logo-ico"])
+
+        try:
+            self._window.iconbitmap(Config.picture_d["logo-ico"])
+        except TclError:
+            pass
 
         # 快捷键相关配置
         def lock_windows(_):