浏览代码

feat: 增加对python3.7的支持

SongZihuan 3 年之前
父节点
当前提交
62ebb523ab
共有 9 个文件被更改,包括 53 次插入36 次删除
  1. 9 9
      conf/args.py
  2. 13 4
      conf/matplotlib_conf.py
  3. 1 1
      core/garbage.py
  4. 20 10
      init.py
  5. 2 2
      setup.py
  6. 2 2
      sql/base_db.py
  7. 1 1
      sql/mysql_db.py
  8. 3 3
      tk_ui/admin.py
  9. 2 4
      tk_ui/station.py

+ 9 - 9
conf/args.py

@@ -1,17 +1,17 @@
 import argparse
 import os
 import sys
-from typing import Optional
+from typing import Optional, Dict
 
 res = os.environ.get('HGSSystem_NA')
-p_args: dict[str: Optional[str]] = {"mysql_url": None,
-                                    "mysql_name": None,
-                                    "mysql_passwd": None,
-                                    "mysql_port": "3306",  # 默认值是 0
-                                    "aliyun_key": None,
-                                    "aliyun_secret": None,
-                                    "program": None,
-                                    "run": None}
+p_args: "Dict[str: Optional[str]]" = {"mysql_url": None,
+                                      "mysql_name": None,
+                                      "mysql_passwd": None,
+                                      "mysql_port": "3306",  # 默认值是 0
+                                      "aliyun_key": None,
+                                      "aliyun_secret": None,
+                                      "program": None,
+                                      "run": None}
 
 if res is None or res == "False":
     parser = argparse.ArgumentParser()

+ 13 - 4
conf/matplotlib_conf.py

@@ -1,9 +1,18 @@
-from .font.noto import noto_font
-
-
 class ConfigMatplotlibRelease:
     """ Matplotlib 相关配置 """
-    matplotlib_font_dict = dict(fname=noto_font)
+    matplotlib_font = "SimHei"
+    matplotlib_font_dict = dict(family=matplotlib_font)
 
 
 ConfigMatplotlib = ConfigMatplotlibRelease
+
+try:
+    import matplotlib.font_manager as fm
+except ImportError:
+    pass
+else:
+    if ConfigMatplotlib.matplotlib_font not in [f.name for f in fm.fontManager.ttflist]:
+        print(f"请安装 {ConfigMatplotlib.matplotlib_font} 字体, 字体列表: {fm.fontManager.ttflist}")
+        exit(1)
+    fm.rcParams["font.sans-serif"] = [ConfigMatplotlib.matplotlib_font]  # 配置中文字体
+    fm.rcParams["axes.unicode_minus"] = False  # 解决负号变豆腐块

+ 1 - 1
core/garbage.py

@@ -59,7 +59,7 @@ class GarbageBag:
             self._lock.release()
         return info
 
-    def get_info(self) -> dict[str: str]:
+    def get_info(self) -> "Dict[str: str]":
         try:
             self._lock.acquire()
             info = {

+ 20 - 10
init.py

@@ -218,13 +218,17 @@ def random_goods(cur):
 def make_fake():
     print("步骤1, 注册管理账户[输入q结束]:")
     while True:
-        if (name := input("输入用户名:")) == 'q':  # 这里使用了海象表达式, 把赋值运算变成一种表达式
+        name = input("输入用户名:")
+        if name == 'q':  # 这里使用了海象表达式, 把赋值运算变成一种表达式
             break
-        if (passwd := input("输入密码:")) == 'q':
+        passwd = input("输入密码:")
+        if passwd == 'q':
             break
-        if (phone := input("输入手机号码[输入x表示随机]:")) == 'q':
+        phone = input("输入手机号码[输入x表示随机]:")
+        if phone == 'q':
             break
-        if (creat_time := input("是否随机时间[n=不随机 y=随机]:")) == 'q':
+        creat_time = input("是否随机时间[n=不随机 y=随机]:")
+        if creat_time == 'q':
             break
 
         if phone == 'x':
@@ -237,17 +241,23 @@ def make_fake():
 
     print("步骤2, 注册普通账户[输入q结束]:")
     while True:
-        if (name := input("输入用户名:")) == 'q':  # 这里使用了海象表达式, 把赋值运算变成一种表达式
+        name = input("输入用户名:")
+        if name == 'q':  # 这里使用了海象表达式, 把赋值运算变成一种表达式
             break
-        if (passwd := input("输入密码:")) == 'q':
+        passwd = input("输入密码:")
+        if passwd == 'q':
             break
-        if (phone := input("输入手机号码[输入x表示随机]:")) == 'q':
+        phone = input("输入手机号码[输入x表示随机]:")
+        if phone == 'q':
             break
-        if (creat_time := input("是否随机时间[n=不随机 y=随机]:")) == 'q':
+        creat_time = input("是否随机时间[n=不随机 y=随机]:")
+        if creat_time == 'q':
             break
-        if (w_garbage := input("待检测垃圾个数:")) == 'q':
+        w_garbage = input("待检测垃圾个数:")
+        if w_garbage == 'q':
             break
-        if (c_garbage := input("已检测垃圾个数:")) == 'q':
+        c_garbage = input("已检测垃圾个数:")
+        if c_garbage == 'q':
             break
 
         if creat_time == 'n':

+ 2 - 2
setup.py

@@ -15,8 +15,8 @@ if sys.version_info.major != 3:
     warnings.warn("请使用 Python3 运行程序")  # 使用 warning 确保 python2 可以输出提示
     exit(1)
 
-if sys.version_info.minor < 8:
-    warnings.warn("请使用python3.8以上版本")
+if sys.version_info.minor < 7:
+    warnings.warn("请使用python3.7以上版本")
 
 if sys.version_info.minor < 9:
     warnings.warn("建议使用python3.9以上版本")

+ 2 - 2
sql/base_db.py

@@ -1,5 +1,5 @@
 import abc
-from tool.typing import List, Union, Optional, Tuple
+from tool.typing import List, Union, Optional, Tuple, Dict
 
 
 class DBException(Exception):
@@ -92,7 +92,7 @@ class HGSDatabase(metaclass=abc.ABCMeta):
         ...
 
     @abc.abstractmethod
-    def update(self, table: str, kw: dict[str:str], where: Union[str, List[str]] = None):
+    def update(self, table: str, kw: "Dict[str:str]", where: Union[str, List[str]] = None):
         """
         执行 更新 SQL语句, 并提交
         :param table: 表

+ 1 - 1
sql/mysql_db.py

@@ -106,7 +106,7 @@ class MysqlDB(HGSDatabase):
 
         return self.__done(f"DELETE FROM {table} WHERE {where};", not_commit=not_commit)
 
-    def update(self, table: str, kw: dict[str:str], where: Union[str, List[str]] = None, not_commit: bool = False):
+    def update(self, table: str, kw: "Dict[str:str]", where: Union[str, List[str]] = None, not_commit: bool = False):
         if len(kw) == 0:
             return None
 

+ 3 - 3
tk_ui/admin.py

@@ -41,7 +41,7 @@ class AdminStationBase(TkEventMain, metaclass=abc.ABCMeta):
     def get_db(self):
         return self._db
 
-    def create_garbage(self, path: Optional[str], num: int = 1) -> List[tuple[str, Optional[GarbageBag]]]:
+    def create_garbage(self, path: Optional[str], num: int = 1) -> "List[tuple[str, Optional[GarbageBag]]]":
         re = []
         for _ in range(num):
             gar = create_new_garbage(self._db)
@@ -274,12 +274,12 @@ class AdminStation(AdminStationBase):
     def __conf_create_tk(self):
         self._menu_back = tk.Frame(self._window)
         self._menu_line = tk.Label(self._menu_back)  # 下划线
-        self._menu_title: Tuple[tk.Label, tk.Variable] = tk.Label(self._menu_back), tk.StringVar()
+        self._menu_title: Tuple[tk.Label, tk.Variable] = (tk.Label(self._menu_back), tk.StringVar())
         self._menu_dict: Dict[str, tk_menu.AdminMenu] = {}
         self._menu_list: List[str] = []  # 菜单回溯
 
         self._program_back = tk.Frame(self._window)
-        self._program_title: Tuple[tk.Label, tk.Variable] = tk.Label(self._program_back), tk.StringVar()
+        self._program_title: Tuple[tk.Label, tk.Variable] = (tk.Label(self._program_back), tk.StringVar())
         self._program_dict: Dict[str, tk_program.AdminProgram] = {}
 
         self._win_ctrl_button: List[tk.Button, tk.Button, tk.Button] = [tk.Button(self._menu_back),

+ 2 - 4
tk_ui/station.py

@@ -137,8 +137,6 @@ class GarbageStationBase(TkEventMain, metaclass=abc.ABCMeta):
         :param user: 新用户
         :return: 登录-True, 退出-False
         """
-        if self._user is not None:
-            print(f"{self._user.get_uid()=} {user.get_uid()=}")
         if self._user != user and self._user is not None:
             self._user.destruct()
         self._user = user
@@ -173,7 +171,7 @@ class GarbageStationBase(TkEventMain, metaclass=abc.ABCMeta):
             return -4
         return 0
 
-    def ranking(self, limit: int = 0, order_by: str = 'DESC') -> list[Tuple[uid_t, uname_t, score_t, score_t]]:
+    def ranking(self, limit: int = 0, order_by: str = 'DESC') -> "List[Tuple[uid_t, uname_t, score_t, score_t]]":
         """
         获取排行榜的功能
         :return:
@@ -636,7 +634,7 @@ class GarbageStation(GarbageStationBase):
         # 进度条
         self._loading_frame = tk.Frame(self._window)
         self._loading_line = tk.Label(self._loading_frame)
-        self._loading_title: Tuple[tk.Label, tk.Variable] = tk.Label(self._loading_frame), tk.StringVar()
+        self._loading_title: Tuple[tk.Label, tk.Variable] = (tk.Label(self._loading_frame), tk.StringVar())
         self._loading_pro = ttk.Progressbar(self._loading_frame)
 
     def __conf_font_size(self, n: Union[int, float] = 1):