瀏覽代碼

feat: 调整包导入机制

SongZihuan 3 年之前
父節點
當前提交
c0d386061a

+ 5 - 44
conf/__init__.py

@@ -3,57 +3,18 @@
 配置文件
 """
 
-import sys
-import warnings
 from font.noto import noto_font
-from picture import *
+from picture import head_pic, rank_bg_pic
 
-if len(sys.argv) != 4:
-    warnings.warn(f"参数不足: {len(sys.argv)}")
-    raise exit(1)
-
-MYSQL_URL = sys.argv[1]
-MYSQL_NAME = sys.argv[2]
-MYSQL_PASSWORD = sys.argv[3]
-
-database = 'MySQL'
-
-passwd_salt = "HGSSystem"
-default_score = 10
-default_reputation = 300
-
-max_rubbish_week = 34
-limit_rubbish_week = 50
-
-base_location = "Guangdong-Guangzhou"
+from .equipment import *
+from .sql import *
+from .sys_default import *
 
 font_d = {
     "noto": noto_font
 }
 
-pic_d = {
+picture_d = {
     "head": head_pic,
     "rank_bg": rank_bg_pic
 }
-
-capture_num = 0  # 摄像头号
-capture_arg = []
-
-tk_refresh_delay = 50  # 延时任务的时间
-
-qr_show_uid_len = 12  # qr 码上展示uid的长度
-tk_show_uid_len = qr_show_uid_len  # tk 界面上展示uid的长度
-ranking_tk_show_uid_len = tk_show_uid_len  # tk ranking 界面上展示uid的长度
-
-tk_second_win_bg = "#fffffb"  # tkinter 第二窗口 标准颜色
-tk_win_bg = "#F0FFF0"  # tkinter 一般窗口 标准颜色 蜜瓜绿
-tk_btn_bg = "#dcdcdc"  # tkinter 按钮 标准颜色
-
-about_info = f'''
-HGSSystem is Garbage Sorting System
-
-HGSSystem 版权归属 SuperHuan
-作者: SongZihuan[SuperHuan]
-
-项目托关于 Github 平台
-'''.strip()

+ 2 - 0
conf/equipment.py

@@ -0,0 +1,2 @@
+capture_num = 0  # 摄像头号
+capture_arg = []

+ 2 - 3
conf/font/noto/__init__.py

@@ -1,5 +1,4 @@
 import os
 
-
-font = os.path.dirname(os.path.abspath(__file__))
-noto_font = os.path.join(font, "NotoSansMono-VariableFont_wdth,wght.ttf")
+__font = os.path.dirname(os.path.abspath(__file__))
+noto_font = os.path.join(__font, "NotoSansMono-VariableFont_wdth,wght.ttf")

+ 3 - 4
conf/picture/__init__.py

@@ -1,6 +1,5 @@
 import os
 
-
-pic = os.path.dirname(os.path.abspath(__file__))
-head_pic = os.path.join(pic, "head.png")
-rank_bg_pic = os.path.join(pic, "rank_bg.png")
+__pic = os.path.dirname(os.path.abspath(__file__))
+head_pic = os.path.join(__pic, "head.png")
+rank_bg_pic = os.path.join(__pic, "rank_bg.png")

+ 11 - 0
conf/sql.py

@@ -0,0 +1,11 @@
+import sys
+import warnings
+
+if len(sys.argv) != 4:
+    warnings.warn(f"参数不足: {len(sys.argv)}")
+    raise exit(1)
+
+database = 'MySQL'
+mysql_url = sys.argv[1]
+mysql_name = sys.argv[2]
+mysql_passwd = sys.argv[3]

+ 29 - 0
conf/sys_default.py

@@ -0,0 +1,29 @@
+passwd_salt = "HGSSystem"
+default_score = 10
+default_reputation = 300
+
+max_rubbish_week = 34
+limit_rubbish_week = 50
+
+base_location = "Guangdong-Guangzhou"
+
+tk_refresh_delay = 50  # 延时任务的时间
+
+qr_show_uid_len = 12  # qr 码上展示uid的长度
+
+# tkinter 相关
+tk_show_uid_len = qr_show_uid_len  # tk 界面上展示uid的长度
+ranking_tk_show_uid_len = tk_show_uid_len  # tk ranking 界面上展示uid的长度
+
+tk_second_win_bg = "#fffffb"  # tkinter 第二窗口 标准颜色
+tk_win_bg = "#F0FFF0"  # tkinter 一般窗口 标准颜色 蜜瓜绿
+tk_btn_bg = "#dcdcdc"  # tkinter 按钮 标准颜色
+
+about_info = f'''
+HGSSystem is Garbage Sorting System
+
+HGSSystem 版权归属 SuperHuan
+作者: SongZihuan[SuperHuan]
+
+项目托关于 Github 平台
+'''.strip()

+ 2 - 3
equipment/scan_garbage.py

@@ -1,13 +1,12 @@
 from core.garbage import GarbageBag
 from sql.db import DB
 from sql.garbage import find_garbage
-from type_ import *
-from scan import QRCode, HGSCapture, HGSQRCoder
+from tool.type_ import *
+from .scan import QRCode, HGSCapture, HGSQRCoder
 from tool.pic import write_text
 import re
 import os.path
 
-
 qr_user_pattern = re.compile(r'HGSSystem-QR-GARBAGE:([a-z0-9])+-END', re.I)
 
 

+ 2 - 3
equipment/scan_user.py

@@ -2,13 +2,12 @@ import conf
 from core.user import User
 from sql.db import DB
 from sql.user import find_user_by_id
-from type_ import *
-from scan import QRCode, HGSCapture, HGSQRCoder
+from tool.type_ import *
+from .scan import QRCode, HGSCapture, HGSQRCoder
 from tool.pic import write_text
 import re
 import os.path
 
-
 qr_user_pattern = re.compile(r'HGSSystem-QR-USER:([a-z0-9]{32})-END', re.I)
 
 

+ 4 - 2
main.py

@@ -1,3 +1,5 @@
 import conf
-import core
-import tool
+import app.ranking as ranking_website
+import tk_ui.ranking as ranking_station
+import tk_ui.station as garbage_station
+import tk_ui.admin as admin_station

+ 1 - 1
sql/garbage.py

@@ -1,5 +1,5 @@
 import time
-from db import DB, DBBit, DBDataException, DBDoneException
+from sql.db import DB, DBBit, DBDataException, DBDoneException
 from tool.type_ import *
 from tool.time_ import HGSTime, mysql_time, time_from_mysql
 from core.garbage import GarbageBag, GarbageType

+ 2 - 2
sql/mysql_db.py

@@ -1,12 +1,12 @@
 import pymysql
 import threading
-from conf import MYSQL_URL, MYSQL_NAME, MYSQL_PASSWORD
+from conf import mysql_url, mysql_name, mysql_passwd
 from .base_db import Database, DBException, DBCloseException
 from tool.type_ import *
 
 
 class MysqlDB(Database):
-    def __init__(self, host: str = MYSQL_URL, name: str = MYSQL_NAME, passwd: str = MYSQL_PASSWORD):
+    def __init__(self, host: str = mysql_url, name: str = mysql_name, passwd: str = mysql_passwd):
         super(MysqlDB, self).__init__(host, name, passwd)
         try:
             self._db = pymysql.connect(user=name, password=passwd, host=host, database="hgssystem")

+ 3 - 3
sql/user.py

@@ -1,12 +1,12 @@
 import csv
 
-from db import DB, DBBit
+from .db import DB, DBBit
 from tool.type_ import *
 from tool.login import create_uid, randomPassword
 from tool.time_ import mysql_time
 from core.user import NormalUser, ManagerUser, User
 import conf
-from garbage import count_garbage_by_time
+from . import garbage
 
 
 def update_user_score(where: str, score: score_t, db: DB) -> int:
@@ -78,7 +78,7 @@ def find_user_by_id(uid: uid_t, db: DB) -> Optional[User]:
     else:
         score: score_t = res[3]
         reputation: score_t = res[4]
-        rubbish: count_t = count_garbage_by_time(uid, db)
+        rubbish: count_t = garbage.count_garbage_by_time(uid, db)
         return NormalUser(name, uid, reputation, rubbish, score)  # rubbish 实际计算
 
 

+ 4 - 4
tk_ui/admin.py

@@ -8,7 +8,7 @@ from core.garbage import GarbageBag
 from core.user import User
 from equipment.scan_garbage import write_gid_qr, write_all_gid_qr
 from equipment.scan_user import write_uid_qr, write_all_uid_qr
-from event import TkEventMain
+from .event import TkEventMain
 from sql.db import DB, search_from_garbage_checker_user
 from sql.garbage import (create_new_garbage, search_garbage_by_fields, search_from_garbage_view,
                          del_garbage, del_garbage_not_use, del_garbage_wait_check, del_garbage_has_check,
@@ -212,9 +212,9 @@ class AdminStationBase(TkEventMain, metaclass=abc.ABCMeta):
         ...
 
 
-import admin_program as tk_program
-import admin_menu as tk_menu
-import admin_event as tk_event
+from . import admin_program as tk_program
+from . import admin_menu as tk_menu
+from . import admin_event as tk_event
 
 
 class AdminStation(AdminStationBase):

+ 3 - 3
tk_ui/admin_event.py

@@ -7,9 +7,9 @@ from sql.user import find_user_by_name
 from core.user import User
 from core.garbage import GarbageBag
 
-from event import TkEventBase, TkThreading
-import admin
-import admin_program
+from .event import TkEventBase, TkThreading
+from . import admin
+from . import admin_program
 
 
 class AdminEventBase(TkEventBase):

+ 2 - 2
tk_ui/admin_menu.py

@@ -4,11 +4,11 @@ import tkinter as tk
 from tool.type_ import *
 from tool.tk import make_font, set_tk_disable_from_list
 
-import admin
+from . import admin
 
 
 class AdminMenu(metaclass=abc.ABCMeta):
-    def __init__(self, station: admin.AdminStationBase, win: Union[tk.Frame, tk.Toplevel, tk.Tk], color: str,
+    def __init__(self, station: "admin.AdminStationBase", win: Union[tk.Frame, tk.Toplevel, tk.Tk], color: str,
                  title: str):
         self.station = station
         self.win = win

+ 3 - 3
tk_ui/admin_program.py

@@ -8,15 +8,15 @@ from tool.tk import make_font, set_tk_disable_from_list
 from tool.login import create_uid
 
 import conf
-import admin
-import admin_event as tk_event
+from . import admin
+from . import admin_event as tk_event
 
 from sql.user import find_user_by_name
 from core.garbage import GarbageType
 
 
 class AdminProgram(metaclass=abc.ABCMeta):
-    def __init__(self, station: admin.AdminStation, win: Union[tk.Frame, tk.Toplevel, tk.Tk], color: str, title: str):
+    def __init__(self, station: "admin.AdminStation", win: Union[tk.Frame, tk.Toplevel, tk.Tk], color: str, title: str):
         self.station = station
         self.win = win
         self.color = color

+ 1 - 1
tk_ui/ranking.py

@@ -272,7 +272,7 @@ class RankingStation(RankingStationBase):
         self.window.bind("<F11>", lambda _: self.__switch_full_screen())
 
     def __conf_windows_bg(self):
-        img = Image.open(conf.pic_d['rank_bg']).resize((self.width, self.height))
+        img = Image.open(conf.picture_d['rank_bg']).resize((self.width, self.height))
         self.bg_img = ImageTk.PhotoImage(img)
         self.bg_lb['image'] = self.bg_img
         self.bg_lb.place(relx=0, rely=0, relwidth=1, relheight=1)

+ 3 - 3
tk_ui/station.py

@@ -21,7 +21,7 @@ from sql.garbage import update_garbage
 
 from equipment.scan import HGSCapture, HGSQRCoder
 
-from event import TkEventMain
+from .event import TkEventMain
 
 
 class GarbageStationException(Exception):
@@ -442,7 +442,7 @@ class GarbageStationBase(TkEventMain, metaclass=abc.ABCMeta):
         ...
 
 
-import station_event as tk_event
+from . import station_event as tk_event
 
 
 class GarbageStation(GarbageStationBase):
@@ -768,7 +768,7 @@ class GarbageStation(GarbageStationBase):
         # 显示一张图片 (GUI更美观)
         img_relwidth = 0.30
         img_relheight = height_label * 3 + (h_label_s / height_count) * 2
-        img = (Image.open(conf.pic_d['head']).
+        img = (Image.open(conf.picture_d['head']).
                resize((int(img_relwidth * frame_width), int(img_relheight * frame_height))))
         self._user_im = ImageTk.PhotoImage(image=img)
         self._user_img['image'] = self._user_im

+ 2 - 2
tk_ui/station_event.py

@@ -9,8 +9,8 @@ from core.garbage import GarbageBag
 
 from sql.db import DB
 
-from event import TkThreading, TkEventBase
-import station as tk_station
+from .event import TkThreading, TkEventBase
+from . import station as tk_station
 
 
 class StationEventBase(TkEventBase):