diff --git a/images/3rd/qt.png b/images/3rd/qt.png new file mode 100644 index 0000000..beeaa0e Binary files /dev/null and b/images/3rd/qt.png differ diff --git a/images/splash.png b/images/splash.png index f37fba2..8bd8a92 100644 Binary files a/images/splash.png and b/images/splash.png differ diff --git a/main.spec b/main.spec index ea1c4e0..6f7f9c3 100644 --- a/main.spec +++ b/main.spec @@ -47,6 +47,6 @@ exe = EXE( target_arch=None, codesign_identity=None, entitlements_file=None, - name='建工工具箱', + name='教学工具箱', icon=['images\\logo.png'], ) diff --git a/module/resources.py b/module/resources.py index 8f80f72..3798f93 100644 --- a/module/resources.py +++ b/module/resources.py @@ -13461,6 +13461,716 @@ g\xa5\x7f\xb93\xf0\xa2\xe7X\xdc\x92TAmb\xa0\ \x10#\x90\x1eoP\x94 <\ +rdf:li stEvt:act\ +ion=\x22created\x22 st\ +Evt:instanceID=\x22\ +xmp.iid:fcb9afb7\ +-2396-8d47-9590-\ +c27e2f03daca\x22 st\ +Evt:when=\x222023-0\ +5-24T08:37:21+08\ +:00\x22 stEvt:softw\ +areAgent=\x22Adobe \ +Photoshop CC 201\ +9 (Windows)\x22/> <\ +/rdf:Seq> ;\x00\xe9c\x00\x00\x18\ +6IDATx\x9c\xed\x9dMl\x1cGv\x80_\ +\xf7\xfc\x89?\x12%\x91\x16\xa5\x006AoV\x12\xa4\ +P\xda\x8be\xc3\xa6\xb5\xb9\xec-\xb9\x88\x86\x04Y@\ +.9\x04X \xc6\x1e\x14\x10br2`*\x0cx\ +X\xd8\x87E\x845\xd6\x01\x12-\xa8\x8dh\x18>\xf8\ +``\x0d\xaf(o@!\xb0)\xc5\x02C\x1f\x04\x01\ +\x1bX\x14%\xfe\x88\x94\xc73\xd3\xd3\x9d\x83Xt\xb1\ +\xf8\xaa\xba\xaa\xbb\xab\x7f\xeb\x03\x88\x9e\xe9\xe9\x9f\xfay\ +\xef\xd5{\xaf\xaa\x9b\x96\xe7y`0\x14\x15;\xe9\x02\ +\x18\x0cIb\x14\xc0Ph\x8c\x02\x18\x0a\x8dQ\x00C\ +\xa11\x0a`(4F\x01\x0c\x85\xc6(\x80\xa1\xd0\x18\ +\x050\x14\x1a\xa3\x00\x86Bc\x14\xc0Ph\x8c\x02\x18\ +\x0a\x8dQ\x00C\xa11\x0a`(4F\x01\x0c\x85\xc6\ +(\x80\xa1\xd0\x18\x050\x14\x1a\xa3\x00\x86Bc\x14\xc0\ +Ph\x8c\x02\x18\x0a\x8dQ\x00C\xa11\x0a`(4\ +\xe5\xa8/hY\x16\x0c\x8e\xcf\xf4\xf6\xbf~\xe2=\xa7\ +\xed\x9e\xb7,\xebQ\xc9\xb6>\xad?\xfc\xee?\xe7F\ +\x0eNG}?C\xfe8y\xfd\xc1\x99\x8e\x03\x9do\ +\xb4]\xefg\x9e\xe7\xf5\x95K\xf6o\x17o\xdc\xfe\xfb\ +{c\xc3\x8f\xa3~\x8b\x89\x15\xf9\x05-\x0b^\xfa|\ +m\xc9\xf3\xbc>\xf6\xb7r\xc9\xfe\xed\xb7_\xcc_\xbe\ +?z\xeaN\xa475\xe4\x82\x81\x89\xd9\xa1C\xaf\x1e\ +\xbd\xe4\xb4\xdd\xf3\xeco\x96e=\xba\xf5\xd3\x9e\xe7R\ +\xaf\x00?\x99^F\xe6\x15\ +\x00\xe0\x87\xf9\x02\xa3\x04\xfa\x19\x98\x98\x1d\xcaB~_\ +\x96\x5c(\x00\xc0\x0fJ`\xdc!}\x0c\x8e\xcf\xf4\xe6\ +I\xf8\x01r\xa4\x00\x00\xcf\x94\xa0\xff\xf5\x13\xef%]\ +\x8e\xbc\xd2\xff\xfa\x89\xf7\xf2$\xfc\x009S\x00\x80g\ +1\x81q\x85\xa2g`bv(\x0f>?K\xee\x14\ +\x00\x00\xe0\xd0\xabG/%]\x86\xbc\x91\xd76\xcd\xa5\ +\x028m\xf7\xbc\x89\x05\xa2cp|\xa67\x8f\xd6\x1f\ + \xa7\x0a\x00\x00\xb0\xe7\xc8\x9f\xff4\xe92\xe4\x85<\ +\xb7en\x15@\xc7+4\x8aJ\x9e\xdb2\xb7\x0a\xa0\ +\xe3\x15\x1aE%\xcfm\x99[\x050\x18d0\x0a`\ +(4\xda\x14\xa0Z\xb6\xb7m\x0d\x06U\xe2\x90!m\ +Wn:\xee\xb6\xadQ\x04\x83,DVX\x19\xd2\x81\ +v\xa9\xa4+c\x94\xc0\xe0G\xb5l\xc7j4\xb5\xdc\ +\xa1Z\xb6wh1]1\xf2\xdd`\x00\xd8.\x0b\xb4\ +\xa1\xa4eG\x97\xbch\x95BL\x11\x08fD0\x00\ +\xec4\x8c\x00\xf1\x08>!\x16\x09\xa4+\xc1j\xbb\xa1\ +\xd8\xf0\xbc\x82\xb8\x8cc\xac&\x98\x17\xd5\x9b\x91\xa0x\ +\xf0d nY\x88\xednv$\xa0\x85_\ +TIvDH\x22O\x1c5}\x17\xae\xfc\xe5\xe2\x86\ +\xf5m\xbb\xd6\xfd/^\xb9r\xd6\xb3J\x7f\xe5\xd4\xf6\ +\xfc\xd3\xe2\x86\xb5\xd2w\xe1J&_A\x88\xf9\xf7\x22\ +\x8bO\xa0\xfb\x9e\x08\xbc\xc8\xf2c\xb2\x15\x96\xc4\xa4\x88\ +TPF\xd3\xb1\x19\xc2,\x8e\x04{'\x17\xfe}e\ +p\xf8\xd3\x86\xbdo\x1f<\x1b}I\xc5K\x0d{_\ +mep\xf8\x93\xbd\x93\x0b\xff\x96`\x11\x03\x81\xf5\x8d\ +LpK{\x04I\x91\x88\x02\xb0>\x9fLC`\x96\ +?\x0b\xa3\x81eY08>\xd3\xdb3\xf9\xcd\xd7\xeb\ +\xab\xce\x05\x10\xbb\x9d\xa5\xf5U\xe7oz&\xbf\xf9:\ +\xed\xff\xdf h\x7f\xf0\x0c_RJ\x90\xa8\xe4\x04Q\ +\x04\x80`\x16')\x06&f\x87\x96\x9c\xae\xa5\x8d\xd5\ +\xd61\xd9s6V[\xc7\x96\x9c\xae\xa5\xb4\xfe\xab\xa7\ + #r\xda\x04\x9f\xa0g\x1e\xa0bC\x8d\x11H\xf6\ +\xfb\xb6\xdf\x14\x15\x81\xe7s\xa6M\x09z&\xe6/\xfd\ +i\xbd\xfbv\xbdYS\xee\xe5z\xb3f\xfdi\xbd\xfb\ +v\xcf\xc4|\xaa\xfe5\x11\xaf\xcdym\x1fD\xf01\ +\xd9\x11\xc9O\x18\xf4\xa6A\xa9\x827$|v6\xfa\ +\x0f\xea#\xa6A\x11\xf6N.Lm\xac\xbb\xe3a\xaf\ +\xb3\xb1\xee\x8e\xef\x9d\x5c\x98\x8a\xa2LaPmS\xac\ +\x0fe3;DVt\x0a>A\xbb\xa44Z\xeeV\ +%d*\x83Y\x09\x99\x94)\xdbA\xfb\xba\xcb\x15\xe5\ +\xc2F\xc0\xe0\xf8Lo\xf7\xdb_\xba\xeb\xab\xce\xd9\xa8\ +\xae\xb9\xbe\xea\x9c\xed~\xfbK7\xa9\xb8\x80mK\x19\ +_\x1f3^2\xc2O\xcb\x8a\x8c\xd1\x0c\x8bv\x05\xa0\ +\x85^\xa5Bl\xea\x14\xfb\x0d#\xc9\x0cQ\xdf\x85+\ +g\x97\x9c\xae\xa5 .\x8f\x1f\xf5f\xcdZr\xba\x96\ +\xfa.\x5c\x89L\xb1T\xf0s1\xb1>\x0a2\x99E\ +\xcb\x88n\xeb\x0f\x10c\x10L\x0fg*\x15\xc3\xe6\x0c\ +\xfc\x86\xd2$\x5c\xa0\x9e\x89\xf9K+\x83\xc3S:\x84\ +\x9fPo\xd6\xac\x95\xc1\xe1\xa9$\xe2\x02?\xe1\xc7,\ +\xbeh\xe4\xdeq\x0dJ6\xe2\x10|B\xec\x92B\x86\ +6\xd9J\xd2V\x04\x8b\x0f\xd2@\xcf\xe47_G\xe1\ +\xef\xcb\xb2\xb1\xee\x8e\xf7L~\xf3u\x5c\xf7\xf3\x83\xe7\ +\xe7\xcbZ~U\x99\x88\x92d\xe6\x01\xa8\x8a\xf2>\xa3\ +\xe7q\xfc\xc9\xa4Ri\x03\x13\xb3C\xddo\x7f\xe9\xaa\ +\xa48\xa3bc\xb5u\xac\xfb\xed/\xdd\xa4R\xa5A\ +\xfb\x22h\xdf\xeb\x22\xd9y\x00F\xf3\xe9\xe8_x\x1e\ +ca\x92\x18\x0d\xfa.\x5c9\xfb\xa0\xb1'P\x8a3\ +*\xea\xcd\x9a\xf5\xa0\xb1\xe7v\x12q\x01\xeb\xf2\xc8\x0a\ +>\xdd\xc7IY}\x1a=\xf3\x00U\x1bjU{\xeb\ +3\xbd\xddq,\x13\x17\xd0\xd1\xbf_\xe3\xc8\xac\x1f\xd1\ +\xc1\xde\xc9\x85\xa9\x95\xc1\xe1)\xa7\x99\xfcr\x0c\xa7\xe9\ +\xc2\xca\xe0\xf0T\x5c\xa9R\xd1\xba.\xf4xJ\xf0\xb1\ +\xbeF\xcfAd\x87'?a\xd1\x9f\x06\xdd\x14\x92\x86\ +\x84\xb0\xb0C\xa2\x9f\x22\xb0A\xb1\xee\x91\x80Z\xd2\x90\ +H&F\xc4\xfa\xaas6\x8e%\x14\xd8\xca^\x0cL\ +\xf0\xe9\xfd\xc2{(\xc8LX\xf4N\x84I\x8e\x02\xc2\ +kH\xe4\x83\xd9\x11@\xc7H\x10dIC\xdc\xe8\x5c\ +B\xa1\xda\xc6A\xdd\x9b(dF\x05\xfd\xf3\x00U\x1b\ +\x1aMwk+u\x0e\xf6\xd0\x84\xe2SDQ\xd23\ +1\x7f)i\x7f_\x16\x12\x17D\x9d*UY\x9f\x1f\ +\xa6\xffhY\xd1-\xfc\x001\x05\xc1l\x85d\xb5\x9b\ +\x8d\x0bd\xe7\x11\xa2\x1c\x01\xc8\x92\x864\xf8\xfb\xb28\ +M7\xf2%\x14\xb2A\xaer_!2\x11\x97\xf0\x03\ +\xc4\xf4D\x18\x00.\xf4*#\x03\xed\x0a\x91\x06\xd69\ +U>8>\xd3\xbb\x5c\xed\xff\xc3z\x8a]\x1e?6\ +\xe3\x82\xbf\xd8\xdf\x5c<}ol\xf8\xb1\xae\xfb`}\ +#u\x1e\xd3\xf7q\xb9=4\x89\xe4\xa0\x88\xe0c\xda\ +.\xaa<\x99%\xd4\x9dB#K\x1a\x82\xf8\xfbe\x8d\ +\x9d\x17\xe4\xda$.\xd0\x95*\xa5\xfb\xc2o\x16\x97\xed\ +gV\x0e\x92 \x99\x89\xb0\xcd\x86\xc0\xfc=\x958A\ +\x87\x12\xf4L\xcc_Z?rzkI\x03+t\x22\ +!,Wm\xd0\xe9*9M\xd7\xf7\xfe\xd8\xf7z\xb3\ +f\xad\x1f9\x1d\xf9\x12\x0a\xd5> }\x8b\xc5\x85q\ +Z}\x9aX\x17\xc3\xed\xf8\x0d\xf1\xfbdG\x03\xec\x1e\ +a\x95\x81,i\xa0\x85\x98|&\xc2D\xffF\xf6\xc9\ +\xfc\xc6n\xc9g\xf6\xbb\xdf9lyD\xbf\xb1\xf5\x88\ +b\x09\x85j[\xb3\xfd\xc9\x8b\x07E\xf7\xd2\x89\x9e\x89\ +0\xc6U\x91:g\xb3a\xb0\xd1\xc0o\x12-H\xae\ +\x99\x06[\xd2\xc0\x13nz?\xd9\x87\x09>\xfb\x1b\xbd\ +\xa5\x8f\xa1\xaf+:\x87\xbe6\xefz\xa2\xb2\x12\x82.\ +\xa1P\x9e\xa3A\xfa\x90\xed_?d]\xab0hU\ +1\xe5g\x018#\x80\x9f[\xc4*\x82Jp\x8c-\ +i \xc2Ho\xb1\xfdd\x1f\xbd\xe5\xed\xc7\xae\x81\xdd\ +Ot\xae\xe8\x9e~e\xa5\xef\x17d\x09\x05\xdb\xb6\xbe\ +\xb3\xf4\x88\xf1\x92\x9d\xd1\x8d\xf3\x99\x00\xbd\x13a\x94\x8f\ +(\xdbp;\xae\xa1\x90\x19P\xbd\xf6\xde\xc9\x85\xa9\xf5\ +#\xa7\xa70\x0b\x0b\xb0\xd3\xca\xf2\xac8\xbd\x8f\xb7\x1f\ +\xbb\x86\xe8>\xd8\xb1\xe4\xfa\xd8~QYi\xe8\xf2\xad\ +\x1f9\xad\xbc\x84B\xd6\x90\xd1[\xd5k\xd32\xa3\xdb\ +\x0d\xd2\x9e\x06eG\x00\xf6\x81\x07\x9e\x86\xf3\x02e\x99\ +\xd4i\xadb\xc3\xf7\x02\xcbA\xa78yB\x0b\xb0]\ +Xx\x01(\xe6\xce\xd0\xfby\xd7e\x95\x88\xec\xc3\x94\ +Lt}\x91{\x84\x95\x8d\xbd\xael\xaaT&\x9f\xcf\ +\xeb+??\x9f\x97B\xcdl\x0c\xc0\x83\xf6\xe9\xc8w\ +?\xb0\xc6\x0b3Q\x22Z\xd2@\x94\x81\xb5\xb4\x98\x92\ +\x90\xfdd\x1f\xe6o\x8b~\xf3\xfb\x8ce\x94\xb0\xdfx\ +\x82\xcf\x96\x8d\xfec\x09\xbb\x84\x82g\x90d\xfa\x88}\ +\xfe7\x8e\xc7 ibU\x00v\x88\xc3\xe2\x03QP\ +%\x9a?\x90\xa1gb\xfe\xd2\xe3Fe\x8eNq\xfa\ +\x05\xab~\xee\x06\xd9\x87my>9}.vm\x91\ +\xa0\xf3\xe2\x02\x91[&\x13\x90\xd7\x9b5\xebq\xa32\ +\xa7\x9a*U\xe9\x17\xac\x9fY\xc1\x8f{yt,w\ +\xdb\xf1\xbc\xa8\xc0\xd7\x13Y\x00^P,\xa3\x08{'\ +\x17\xa6\xda\x8d\xfa;\xec~\xbf\xc0\xd3O\xa8\xc9>\x0c\ +\x91\x9b\xe2\xf7\x99\x17\x97\x10DY)\xd5:\xd1\xb4\x1b\ +\xf5wd\xe2\x02\xb6\xcde\xf2\xf9\xd8\xb3\x00<\xc1\x8f\ +ki\xbb\x16\x05`\x1fd\xe7-Nc\x1bBe\xfd\ +\x08;\x87@>\xb3\x90%\xcc\xcd\xe5\xa5HfBE\ +q\x80\xca9A\xee\x13\xb6\x1c\xb24\x97\x97\xb8K\xab\ +\xd9\xd8\x8c\xec\x0b\xb2\xaeK\x14\xe4\xb2\xcf\x82g\xee\xff\ +\x03\x00\xc8-\x9d\xc5\x1a@e8\xc4\xa6\xd3Ig\x0c\ +L\xcc\x0e-nX\x8fZ\xcb\x0f\x8f\x01<\x1b\xe6\x15\ +\xabP8H\x1b\xb5\x96\x1f\x1e[\xdc\xb0\x1e\x91\xb8\x80\ +\x15|\x955\x5c\x00\xf8\xc8.\x9c$\x8d\xe9!'\xed\ +.\x90\xec\xdb\xa0Y\x9fP6\x0d\xc6\xeb\x98]\x15\xbb\ +gi\xadu\x9b>\xb6\xa3\xda\xd8*HT\xd62\x0f\ +\xd0mA\xb7\x11\x00\xc0\xd2Z\xeb\xf6\xae\x8a\xdd#2\ +4\xcb\ +\xa6\xb8\xb1Erq-\x8d\xd6.%AW~n\x9d\ +\x8f\xbc\xffS5s@\xe7\xb5I\x06(\xc8dS^\ +!mAg\xc7\xd8\xb9\x00?\xe8\xbeQ\x09rUV\ +\x88\xea \xbe\x17c!\xbe:\xb6\xe5\x9e\x8fe\x83\x02\ +\xbc\x06\xb1\x02u\xaf\x05\x1d\x16/\x1f\x1f\x17\xd5\x0a\x5c\ +\xf3\xda\xeeW\x00\x00V\xc9\xfeI\xb3\x05\x89\xbdp\x97\ +\xc4\x07\xd8\xfc\x88\x1fX\x1f\xc8Z\xfd\xa0\xab\x81\xa3$\ +6\x05\xa0\xa1+\x88i\xbd\xaa\x22\x90\xfd2\xca\xd0\x82\ +\x0e\x0b\xf5\x91\xcb6\xb4\x1dwk\x1b\x15\xec\xf5*\x15\ +\xeb\xee\xfe\xe6\xe2\xe9{\x17\xb7?~88>\xf3\xf3\ +\xe5j\xff\x1fZ-\xef\x18\xef\xdc\xa8\xca\xc2^wk\ +\x04huX2J\x10t\x16\x97\xf4-f\xf0\x92r\ +Y\x133\x81\xa2\xd8\x00@\xce\xdf\xc4&\xd1\xfc\xa8@\ +\xdd\xdb\x96Z,ofN6\x05\x82l\xc9~\xf68\ +U\xe8\xebUlwl\xed\xe2\x8f\x8fc\xcf\xde\xde\x1b\ +\x1b~\xbcv\xf1\xc7\xc7+\xb6;\xc6\x96I\x15^\xd9\ +Eul\xb7\x5c\xe9\x11@u2\x0b\xeb\xdb\xb8}}\ +\x1e\x89)\x00\x1b\xf9\xb3C\xa0\x8c\x22`\xb3\x8b~\xb0\ +#\x00-\x0cD hKI\x1fG\x7fg?\xd3\xe7\ +b\xfb^|\xb1{dm\xf4\xe8e\xbf\xf2\xad\x8d\x1e\ +\xbd\xfc\xe2\x8b\xdd#\xbc\xeb\xb0\xfb\xb0\xb2l\xb3\xeeL\ +]\xe8s\xd9Q\x80\x9d!\xc7\x90\x99\xb5\xdf:\x16I\ +x`\xd9\xa4$\x13\x16\xda\xef\x5cU\x0cX\x83\x06\xca\ +\xb2)S\xd6\xca\xb1\x02\x81Yz\xcc\xa2b\xc7\xb2\x82\ +J>\xefw\x97O\xcc\x8d\x1c\x9c\xf6\xad\xc8&s#\ +\x07\xa7\xf7\xbb\xcb'0!W-\x0bv,\xf9\xcc\x1e\ +#\x1a\x01\x82\xac\xd5\x0f\xfb\xef\x90Te'\x08\xda\x15\ +\xa0I\x09\xa6\xa8B\xa2l\x91Lp$\xfb\x0f\x1c\xdc\ +J\xd7\xd6\x0f\x1f=\xe4\x11d-\x00\ +;\x99\xe27\x0a\xf0:\x98\x16 \x99-\xf9L\x82]\ +\xa9\xc2j\x80\x04\xc7l\xb9d\xb6\x98\x22\x10\x03!\xba\ +'\xdb\xce\xb2#/f\xe4h\x19H\x8a\xe4\xa6\xe0`\ +{\xe0\x83i\xbfl\xc3\xc8\x06\xc5<\xebF,'\xfb\ +\x07\x00\xe8w\xe2\xef\xeb\x08vUY\x1b=z\x99\xc4\ +\x05\xa22\xb3\x7f\x0eg\xc4\x14\x8d\x00*K\xd9\x09X\ +\x7f\xd2\xb1`\x92\xc2\x0f\x90\xb0\x02\x00\xecT\x02zT\ +P\x0d\x92\xb1\xc5U\xf4\xb2^\xcc\xba\xb1\x02AoY\ +A)Wlp\x9dvl\xfe\xbe,$.p\x9d\xf6\ +]\xda\xb2\xb3u`\xeb\x86\xc63T\x1b\x91\xb6\xc3\x16\ +/\xca\xc2\xf6g\x9a\x84\x1f \xa1\xd5\xa0,X\xa3\xb0\ +J!\x83\x9f/\xeaV\xba,\x91\xff\xcf\xf3\xa1\xc9~\ +\xcfq\xae\xad]<|nM\xb2^q\xb2\x19\x83\x1c\ +\xdf;\xb90e\x95\xcbg\xfd\xea\x82Q*\xdb\xd0\x06\ +\xdc\x0d\x0a\x92l }\x87)A\x1a\x84\x1f \x05#\ +\x00\x0d;\x1a`.R\x18\xec\xd6S\x8f\x9e\xf9d\x05\ +\x81'\x18\xe5\x8a\x0dn\xa3\x99\xa8\xbf/\xcb\xea\xc5\xc3\ +\xe7\xdcFsLT\x17\xde\xf7\xb6\xe3F2O\xc2\x1a\ +\xb4\xb4Y}\x9aT)\x00\x00>\x0b\xc86Z\xd0l\ +\x81\xd5\xb1\x9b;\x02\xf0p\x9d\xf6\xdd=\x8dG\xa9\xf0\ +\xf7eY\x1b=zyO\xe3\xd1\x09\xd7i+\xcd\x17\ +\x94\xca6X\x1d\xbb\x95\x1a\x95\xd7\x17\xd8\xbcO\xda\x84\ +\x1f \x85\x0a@\xc0&\xcd\xc2L\xa4\x01\x00x\xf5\xf5\ +\x1f\xde\x0e-1\x94\xa7\xd1\xdf\x97\x85\x8e\x0b\xfc\x8e\xa5\ +\xdb\x82n#\x19\xb0\x89,l_ZI\xad\x02\x10\xfc\ +\xac\xbf\xcah\xa0b\xdd\x9e\xf9\xfb\xf1\xe6\xf7\xa3\x86\xcc\ +\x17x\x8es\xcd\xff\xe8g\xc8\xb4\x91l\x1f\xa4Y\xf0\ +\x09\xa9W\x00\x02\xcf\x8fT\x19\x0dd\xad\xdb\x0b\xcfw\ +\x8ed\xc1\xdf\x97e\xf5\xe2\xe1s/<\xdf)\xb5\x8e\ +H\xa6\x8d\xb06\x8f:^\x8b\x8b\xcc(\x00\x01\x0b\x94\ +e-\x0f\xb1n<\xf7\x87\xf8\xfb:\xd7\xf3$\xc5\xdc\ +\xc8\xc1iQ\x5c@\xda\x847\x02\xf0|\xfc4\x07\xb8\ +2dN\x01\x00\xf8\xf1\x01\xbb_\x05\xcfqB\xaf\xdf\ +O;$.Pq\x89\x08\xbc\xec\x5c\x16\xad>M*\ +\xe6\x01\x82\x82-\xa1\xe0)AeO\x8f\xd5z\xb2\xe6\ +U\xf6\xf4\xec\xe8)\xb7\xd1\x1c[\x1b=zyU_\ +QS\xc3fLs\xaegb\xfe+\xbbV\x1d\xa7\x7f\ ++Wl m\xd4z\xb2\xb6\xad\x01y\x96>\xab\x82\ +O\xc8\xe4\x08\xc0\xc2S\x84m/\xc4z\xb2\xe6Y\x1d\ +\xbb-zf\xb7T\xb1\xe0\x85\xe7;\xb5\xac\xdfO;\ +k\xa3G/\xbf\xf0|\xe7H\xa9\xf2C\xdb9-\x17\ +\xac\x8e\xdd\xdb\x84\xdf\xde\xd5\xe9a\x93\x91Y\x17|B\ +.\x14\x80\xe0\xb7\xb8\x8a\x9e\xfew\x9d\xf6\xdd\xae\x8d\xa5\ +\x5c\xfa\xfb\xb2\xcc\x8d\x1c\x9c\xee\xdaX\xda\x8a\x0bx\xcb\ +#\x00\xfc\xdb6\xabd\xda\x05\xc2\x10\x05\xc0YX\xd2\ +\x107\x9b1\xcf\xb6%\x14V\xc7n\x0b\xcb\x06\xe5M\ +\xf8\x01r6\x02\xc8\x90\xb7\x14gT\xa8\xa4J\xf3D\ +a\x14 \x8eG\x16\xb3\x8e\xaeG.\xd3L!\x14\xa0\ +\xdc\xd9\xf5\xbb\xbc\xa78\xa3\x82\xa4J\xcb\x9d]\xbfK\ +\xba,q\x90\xbb\x18\x80\xa5T\xeb\xf8\xc7\xd5\x8b\x87\x0b\ +\x91\xe2\x8c\x0a:U\xdan\xd4\xdfI\xba<:\xc9\xed\ +\x08\xd0t<\xf8\xd1\xf1Co\x141\xc5\x19\x15k\xa3\ +G/\xff\xe8\xf8\xa17\xe2|H=nr\xab\x00\xe5\ +\x92u\xd5\xf8\xfb\xe1\x99\x1b98].YW\x93.\ +\x87.r\xab\x00\x1f}p\xeb\x9f\x93.C^\xc8s\ +[\xe6R\x01\x5c\x0f\xae\x9a\x807:\xee\x8f\x9e\xba\xe3\ +z\x90\xcbQ w\x0a\xd0t<\xf8\xf8\xfd\x9bo%\ +]\x8e\xbc\xf1\xf1\xfb7\xdf\xcac,\x90;\x05\xb8\xf9\ +\xc7\x87#Y~\x88%\xad\xdc\x1b\x1b~|\xf3\x8f\x0f\ +s7Q\x96'\x05X\xf8\xf07\xb7\xccD\x97F\xe6\ +F\x0eN\x7f\xf8\x9b['\x00`!\xe9\xb2DE.\ +\x14\xc0\xf5\xe0\xeaG\xbf\xbe\xf9\xaa\xf1\xfb\xf5s\x7f\xf4\ +\xd4\x9d\x8f~}\xf3\xd5\xbc\xc4\x04\x99W\x80\xcfn,\ +\x8e\xbc\xdbo]0nO|\xdc\x1b\x1b~\xfcn\xbf\ +u\xe1\xb3\x1b\x8b\x99w\x89\xb2\xac\x00\xc6\xe5I\x98<\ +\xb8D\x99T\x00\xe3\xf2\xa4\x87\xac\xbbD\x99S\x00\xe3\ +\xf2\xa4\x8f,\xbbDYR\x00\xe3\xf2\xa4\x9c,\xbaD\ +\x99P\x00\xe3\xf2d\x87\xac\xb9D\xa9W\x00\xe3\xf2d\ +\x8f,\xb9DiV\x00\xe3\xf2d\x9c,\xb8D\xa9T\ +\x00\xe3\xf2\xe4\x87\xb4\xbbD\x91+\xc0\xe2jS\xed\xff\ +\x962\x18\x97'\x7fD\xe5\x12\x85\x95-\x8c\xc8\x15`\ +\xfe\x7fV>\x0cx\xaaqyrNX\x97(\x84l\ +q\xb1\ +\x9f\x00y\xe1\xb3\x1b\x8b#\xba\xe4D\x8b\x0bD\x18\x1c\ +\x9f\xe9\xfd\xeb\xbf}\xed]j\xa8[\xf8v\xa59;\ +{\xfd\xd6/L\x90k\xa0\x19\x1c\x9f\xe9=5\xf2\xd2\ +/\x0f\xed\xab\x9e\x82M\xf7\xd9\xf5\xe0\xea\xc7\xef\xdf|\ +\x8b\x96\x95\xc8\xe55\xea\x0b\x1a\x0cY\x22\x95\xf3\x00\x06\ +C\x5c\x18\x050\x14\x1a\xa3\x00\x86Bc\x14\xc0Ph\ +\x8c\x02\x18\x0a\x8dQ\x00C\xa11\x0a`(4F\x01\ +\x0c\x85\xc6(\x80\xa1\xd0\x18\x050\x14\x1a\xa3\x00\x86B\ +c\x14\xc0Ph\x8c\x02\x18\x0a\x8dQ\x00C\xa11\x0a\ +`(4F\x01\x0c\x85\xc6(\x80\xa1\xd0\x18\x050\x14\ +\x1a\xa3\x00\x86B\xf3\xff\x07\xab\xa8k\x83ZS\xc0\x00\ +\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x0en\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\xe0\x00\x00\x00\xa0\x08\x06\x00\x00\x00\x15u`\x8d\ +\x00\x00\x0e5IDATx^\xed\x9d{\x8c\x1dU\ +\x1d\xc7+>@\xc5\x07\x82&\xa0b\xd5\xa6\x85\x9d\x99\ +\xa5R\x1f\x81\xc4\x80J4B|\x8b \xbe\x1f\x01E\ +\xc1'\x181\xe2\xb5;g\xb6\x15\xc4X\x15\x81(\x11\ +\x81\xa8\x04D\x12E\x0d\x22j@\x11\xa9P\xb5J\xd9\ +\x9d\x99\xed\xc3\x8a\x10\xa0Bi\x81>\xd6\xf3\xdb\xbd\x94\ +\xdd\xdf9\xbb\xe7\xcc\xb93s\xef\xcc\xf9~\x93\xcf?\ +\xf4\x9e\xef\xf9\xcdp\xbf;3w\xcec\xc1\x82\x8a\xf5\ +\xb2\xb1\xe4\xb9a&\xd6H&\x01\x00\xb3\xe1y)U\ +\x08\x1f\x00\xf3\xc33S\x9a\x10>\x00\xcc\xf0\xdc\x94\x22\ +\x84\x0f\x00;xvz\x16\xc2\x07\x80=\x00\xdc\xe0Y*,\x84\x0f\x00wx\x9e\x0a\x09\xe1\ +\x03\xa07x\xa6\xac\x85\xf0\x01\xd0;\x00\xca\x83\xe7k^!|\ +\x00\x94\x0b\xcf\xd8\x9cB\xf8\x00(\x1f\x9e3\xad\x10>\ +\x00\xaa\x81gM\x11\xc2\x07@u\xf0\xbc\xcd\x12\xc2\x07\ +@\xb5\xf0\xcc\xed\x11\xc2\x07@\xf5\xf0\xdcM\x09\xe1\x03\ +\xa0\x1ex\xf6\x10>\x00j\x04\xe1\x03\xa0\x8f |\x00\ +\xf4\x11\x84\x0f\x80>\x82\xf0\x01\xd0G\x16\x84\x08\x1f\x00\ +}\x83\x02\xa8\xfcG\x00@= \x80\x00\xf4\x11\x04\x10\ +\x80>\x82\x00\x02\xd0G\xda\x10\xc0\x87\xa3t\xe4\x98\xfe\ +\x92\x1c\x1be\xf1\xf1A.N\x8c\xf2\xe4\x14\xc9\xd9a\ +.\xce\x8f2q\x8d\xac\xef\x0e\xc9NM\xdd\x00\xb4\x22\ +\x80\x0f\xed\x19M0\xa0:b\xe3yO\x0d\xd3\xf8\xe5\ +2\x94\x9f\x0a\xf3\xf8\x17\xb2\xe6\xad\x9a\xe3\x00\x1e\x82\x00\ +\xf6A\x8b\xc6V\xed\x1d\xa4\xf1;\xbaa\xc4\xd5\xd1c\ +\x10\xc0>k(]q\xb0\xbc}\xbdH\x1e\xc7\xa3\x9a\ +c\x03-\x07\x01\x1c\x10\x85c#/\x0dRq\xad\xe6\ +\xf8@\x8bA\x00\x07La\x96|D\x1e\xd3\x03\x9a\xe3\ +\x04-\x04\x01\x1c@\x0d\x8f\x8bP\x1e\xd7z\xcd\xb1\x82\ +\x96\x81\x00\x0e\xa8\x0e\xdb\x18?_\x1e\xdb?5\xc7\x0b\ +Z\x04\x028\xc0\xea\x86p\x83\xe6\x98AK@\x00\x07\ +\x5c\xf2\xf8\x86%\xdb4\xc7\x0dZ\x00\x02\xd8\x00\x85y\ +|\xba\xe6\xb8A\x0b@\x00\x9b\xa0\xc9\xc9'\x84\xa9\xf8\ +\xad\xe6\xd8A\xc3\xf1:\x80Q&\xbe\x1c\xa4bEO\ +\xe4\xf1h\x90'gJ\xaf\x93i?\x8eh\xfc\x1e\xe3N\xfey\x1b\xc9v_\xd3x\ +UG\x9a|\x9c\xd7`#y\xe7\x90+^\x0d\x05\x01\ +T\xfdj\xc5\xe5\x16\x8cD\x93\x89\xb9\xd7Lh\xc5m\ +\xde\xc6$\xf9\x5c\xf9\x06\xeeS%.cb\x83\xf1\xd1\ +E\xdc\xa7\xc9 \x80\xaa_\x9dl\xe75\xd9\xcap\x05\ +\x9c\x8cr\xf1A\xde\xc6\xa4e\x9b;O\x93m\x1f\xe6\ +^U \xff\x80\xfc\x9b\xf7o#\xbajr\xaf&\x83\ +\x00\xaa~5\x92\xfc\x97\xd7d+\x8b\xf1\xa0\x97\xf26\ +6\x92\xb7w\x7f\xd0xU\xc1%\xbco\x1b\xc9vW\ +j\xbc\x1a\x0b\x02\xa8\xfa\xd5\xc9\x18\xaf\xc9VA\x96|\ +K\xe37\x93\xcd\xb4\x98\x13ogR\x98\x8a\x8e\xc6\xab\ +t\x82<\xf9\x00\xef\xdb\xa4\xee\x08\xa0V\xbc\x80\x7f\x0c\ +\x04P\xf5\xab\x0f\xc7\x97\xe6$y\x05\xfc\xa1\xe2\xc7\x08\ +\xd6'C\xbc\x9dI\xc3Y\xf2j\xeeS\x09\xe3\xf1\x0b\ +y\xdf&M\xed\xb1\xc8}\x1a\x0e\x02\xa8\xfa\xd5H\xf2\ +c^\x93\xadhN\xa1\xea7\x1b\xf9\x9c\xf8I\xde\xce\ +\xa4\xa1\xb5\x9d\xa7\xc8\xb6\x0fr\xaf2q}\xff)\xff\ +`}\x91{5\x1d\x04P\xf5\xab\x93/\xf1\x9al\x15\ +No}\xcd\xfdf\x93\x8a\xaby;\x1b\xc9\xe0\xfeR\ +\xf1*\x93\x5c\x9c\xcf\xfb\xb4\x91\x0c\xeeo\x14\xaf\x86\x83\ +\x00\xaa~\xb5\xe1\xbcH\x13-\xd4kw\x95\xba\x9f\x9e\ +\x9bxs\x93h|\xa6\xc6\xab4\x5cF\xeaLm\xf3\ +\x9d\x89\xed\xdc\xab\xe9 \x80\xaa_m\x0c\x8f\xad|\x01\ +\xaf\xc9FK\xf3\xd1\x85\xdck.\x86\xb2\xf8\x95\xbc\xbd\ +I4>\x93\xfb\x94\xc8.\x97\x85\x8b\xa3t\xe4\x18\x8d\ +W\xe3A\x00U\xbf\xba\xb8\x8d\xd7c\xab(\x8f\xdf\xa2\ +\xf1\xd3#\x9f\x9bx{\xa3&;{\x85\x15\x9d\x1by\ +{\xfbW\xde\x9d\x8dh\x15r\xee\xd5\x06\x10@\xd5\xaf\ +\x16\xa2\x5c|\x81\xd7c+\xd3(\x98\x99\xd0s\x13o\ +o\xa3\xb0\xba\xf7m\xe7\xf2\xbel\x14N\xcf\x01\xe4^\ +\x8d\x07\x01T\xfd\xea`;M\xa9\xe1\xf5\xd8\xca\xe6\x17\ +\xd0\x99}-\xcc;\xfbp\x0f\x93\x824>U\xe3\xd5\ +3Q\x9a\x1c\xcb\xfb2\x89\xa6W\x85\xf5\xcf\xd4\xa8\x05\ +\x04P\xf5\xab\x1c\xba\x9d\xe2\xb5\xd8\xcae\xb8X0>\ +\xf2Z\xeecRE\xeb\xce\xecXr\xc7\xcag\xf0\xbe\ +L\xa2Mo4^\xad\x00\x01T\xfd*\x85F\xf2/\ +\x1a\xeb<\x93\xd7b+\xba\x82pO3\xb1\xe0>6\ +\x92\xcf\x8f\x9bT\xaf\x9e\xb8\x91\xf7a#Y\xc7\x05\x1a\ +\xafV\x80\x00\xaa~U\xb2-\x1c\x8f\x8f\xe4u\x14Q\ +\x98%\x97i|\xe7E>3\xde\xcc}ld3\xda\ +\xa6\x08\xf2\xb6\xf6\xab\xbc\x0f\x1b\x85\xb9\x18\xe7^m\x01\ +\x01T\xfd\xaa\xe2!\xf9\x97\xfc8^C\x11-KW\ +<+t[\x0dm'\xb5\xe5~&\xd1xM\x8d\x97\ +3.\xab\xc0\x15y\xe5\xd2D\x10@\xd5\xaf\x0a\xfeE\ +\xe3\x18y\xffEEC\xcb4\xdeV\xd0\xab\x0b\xeeg\ +\x12\x8d\xd7\xe4>=\xf0\xd0\xa2\xb1U{\xf3>L\x92\ +\xb7\xec\x1f\xd5x\xb5\x06\x04P\xf5+\x93\xcdQ\x1a\x7f\ +\xd6\xe5WH.\xfa\xf2J\xbf\x0d\x9a>lY\xc5=\ +mD\xe365^\x0e\xc4\xbf\xe6\xde6\xa2\xf1\xb2\xaa\ +W{@\x00U\xbf^\xb8[>\xaf\xdcD;\xe3\xd2\ +\xc8\x0d\x97a`s\xa9\xd7\xd7\x02\xf2\xf6\xef\x1f\xdc\xd3\ +F\xb4\xbe\x0c\xf7r\xc1\xe9\xbd\xe7\xf4\x80\x80\xbb\xb9W\ +\x9b\xf0:\x80\x87f\xf1\x8b\xa2\xf5\xa3/\xe9\x85\xae\xc7\ +~.\xb7W\xb6\xea.\xc3\xd7\xeb\x1f\x8b\xdd\x87N\x88\ +\x03\xb9\xb7I\xa5\xbd\x02p\xb8\x05\xf7aG`\xaf\x03\ +\xd8\x14\x95u\x1b\x16\xa5\xe2$\xeemRI/\xc1\x1d\ +\x07\x85\x8b34^\xad\x02\x01\x1cp\xc9g\xc8\xf7h\ +\x8e\xd9\x8d<\xbe\x98\xfb\xdbH\xb6\xbdM\xf1*B*\ +~\xca=m$\xdb\xfeJ\xf1j\x19\x08\xe0\x00+\x1a\ +\x1f]F\xc7\xa79fW\xd6\xf3>lD\xcf\xb4\x1a\ +/kz\x98\x18\xbc\x95{\xb5\x0d\x04p@E\xcbI\ +\xd0\xc2\xbd\x9a\xe3\xed\x09Z\xd6\x8f\xf7e\x92\xdb\xe8\x9b\ +\x19}:,\x8dA\x1b\x98r\x9f6\x82\x00\x0e\xa0\xba\ +W\xbeJ~\xfd\x8b\xf2\xe4\x14\xde\x9fI\xb4\x8f\xa1l\ +\xfb(\xf7\xb2\xc4mq\xa8L\xc4\x1a\xaf\xd6\x81\x00\x0e\ +\x98\xe8\x87\x92\xb0\xd2\xad\xc2\x92+x\x9f6\x92mo\ +T\xbdlH.\xe3^6\xa2\xe1s\xaaW\xfb@\x00\ +\x07D4@\x9b~$\xd1\x1c_\xd9\xdc\xe3\xb2\x1aw\ +\x90\x89\xe5\x1a/#\xf2\xf6\xf5C\xdc\xcb\xa4\xa5y\xe7\ +\xd9\xb2\xedN\xee\xd5F\x10\xc0~K\x86A~\xb9\xdf\ +_\xc5\xf3\xde\x5c\xd0\xfb5^\x86I\xae\xcfd4\x96\ +\x93{\x99\x14N\xc4o\xe3>m\x05\x01\xec\x93h^\ +\x9c\x0c\xde'B\x9b\xd5\xcd\xca\xe7s\xbc\x1e\x93\xbaC\ +\xe1\x8a\xfe\x22\xeb\xb4\xf0\xf0|[\xaf\xb5\x0d\x04\xb0F\ +\xd1d\xda\xa9\xf5\x5cr\xf1}Y\xf7\xff4\xc7R\x0b\ +A*\xae\xe5\xb5\xd9\x88\xc6sr\xaf\xf9\x90\x7f`.\ +\xe4\x1e6\x0a\xfb\xf3G\xa9/ \x80\x15\x89\xaepC\ +c\xcb\x03\xf9\x5cw\xc2\xf4>\x0e\xc9\x0d\xa1\xdbT\xa2\ +*\xd8J\xef\xd9x\xcd&\xd1xN\x8d\xd7\xdc\xc8c\ +\xe7\x1e&\x95<\x03c\xe0\xf1:\x80\xd3W\xa2\xe4\x8a\ +^\x99^\xc86\xb9N\xd6\xf2\x17\xc9\xdf%\xf7k\xea\ +\x1c(h\x09z~>L\x0a\xd2\xd1Wp\x9fy\xd8\ +\xed\xb2\xee\x0d\xed\xea\xa4\xf1j-~\x07\xb0\xf7\x01\xce\ +\xcd%\x17_\xe1\xe7\xc3\xa4\xee\xe6(\xf7)^Z\xe2\ +\xdby{\x1b\x85\x0e3\xfe\x9b\x0c\x02\xa8\xfay\x01m\ +C\xc6\xcf\x87\x8dh\xb9{\xee\xa5#\xc8\xc5y\xbc\xad\ +Q\xd3+~o\xe6^m\x06\x01T\xfd|\xe1\x11\x1a\ +\xe1\xc2\xcf\x89I\xb2\xddi\x1a/\x15\x87\xe57\xa2t\ +y\xa4\xf8\xb4\x1c\x04P\xf5\xf3\x86hB\xbc\x91\x9f\x13\ +\x93\xa6\xc7\xa8\xaa^\x8c\x1d4\xb0\x80\xb75)H\xc5\ +g4^\xad\x06\x01T\xfd|\xa2\xf8*\xd5v\xb7\x89\ +\x7f\xe4\xcdl$\xdb\xfd\x5c\xe3\xd5j\x10@\xd5\xcf'\ +\x9c\xf6\xa7\x90\xcfw\x97k\xbc\xf6@\xfb\xd7\xf36&\ +\x1d}C\xe7Ia\x1f\xdf\x8d\xf6\x0b\x04P\xf5\xf3\x09\ +\xa7W\x05\xf2\xf9\xee\xc3\x1a\xaf=\x04\x13\xe25\xbc\x8d\ +I\xb5\xed\xcc;` \x80\xaa\x9fW\xd0\x9a/\xfc\xbc\ +\x984\x94\xae8\x98\xfb\xcc`;\xed\xe5\xc7\xdb\x98D\ +\x8b\xf6j\xbcZ\x0f\x02\xa8\xfa\xf9E*.\xe0\xe7\xc5\ +F\xb2m\xaaxM\x91\x5c\xc7?k#ZMN\xf5\ +j?\x08\xa0\xea\xe7\x1b\x8e\x03\xa6\xe3\x8b4^N\xfb\ +\x11\xd2\xb0\xbd\xd0}\xc2o\xa3A\x00U?\xefp\x99\ +2\x14\xe4\xe2D\xeeC\xb8\xec\xc8\x1bd\xc9\x9b\xb9\x8f\ +/ \x80\xaa\x9fw\xb8L\x9a\x1d\x1e\xef\x81\x00\xaa~\xbe\xb2\x85\xc6c\xf2\ +sT\xa5,gV\xb4\x1a\x04P\xf5\xf3\x96\xa1R\xd3\xbf\ +w \x80\xaa\x9f\xd7\x0c\xa7\xe2u\xfc`\ +\x8a5\xf4\xc7\x09\x01\x04\xb6lv\xd9C\xb0\xbb\xf4\x07\ +\xf7\xf2\x9d\xe9\xf0\x914\xff\x08\x80J\x1e_\xcc\xb2e\ +%\xd96U\xbc\xfc\xe6\xf1\xf0uO\x10\xff\x00\x00*\ +y|\xc2\x8c\x5cYii>\xbaP\xf1\xf1\x9b\xd9\xe1\ +#i>\x04\x00g\xe7!\x9b\x92\xfdg}q,\x14\ +e\xe2d\x8d\x97\xaf\xa8\xe1#i>\x08\x00\xe7O\xfc\ +{c#\xd9\xee'\x1a/\x1f\xd1\x87\x8f\xa4\xf90\x00\ +\xb3IE\x87\x7fo\x8c\x9a\xec\xec%\xdb\xde\xadx\xf9\ +\xc7\xdc\xe1#i\x1a\x000\x8bh\x229\x82\x7foL\ +\x1a\x9e\x10\x87s\x1f\x0f\x99?|$M#\x00fr\ +\x1fM\xa6\xe5\xdf\x1b\x93\x82<9S\xe3\xe5\x13\xe6\xf0\ +\x914\x0d\x01\xd8C\x94\x89\x9b\xa3t\xe4\x98\xa2\x84\xb9\ +\xb8\x89{y\x84]\xf8H\x9a\xc6\x00\x00w\xec\xc3G\ +\xd2\x18\x00\x00\xdc(\x16>\x92\xc6\x04\x00P\x9c\xe2\xe1\ +#i\x8c\x00\x00\xc5p\x0b\x1fIc\x06\x00\xb0\xc7=\ +|$\x8d!\x00\xc0\x8e\xde\xc2G\xd2\x98\x02\x00\xcc\xf4\ +\x1e>\x92\xc6\x18\x000?\xe5\x84\x8f\xa41\x07\x00\xcc\ +My\xe1#i:\x00\x00\xe8)7|$M'\x00\ +\x00\x95\xf2\xc3G\xd2t\x04\x00\x98M5\xe1#i:\ +\x03\x00 ./images/logo.png + ./images/3rd/qfluentwidgets.png + ./images/3rd/qt.png \ No newline at end of file diff --git a/ui/__init__.py b/ui/__init__.py new file mode 100644 index 0000000..bc637fc --- /dev/null +++ b/ui/__init__.py @@ -0,0 +1,2 @@ +MAIN_THEME_COLOR = "#0064b0" +BLUE_BACKGROUND_COLOR = "#dbeafe" diff --git a/ui/main.py b/ui/main.py index 3e0e9c2..e3f9e96 100644 --- a/ui/main.py +++ b/ui/main.py @@ -1,9 +1,11 @@ from PySide6.QtGui import QIcon, QShowEvent -from qfluentwidgets import FluentIcon, MSFluentWindow, NavigationItemPosition, MessageBox +from qfluentwidgets import FluentIcon, MSFluentWindow, NavigationItemPosition, MessageBox, setThemeColor +from ui import MAIN_THEME_COLOR, BLUE_BACKGROUND_COLOR from ui.pyui.about_ui import AboutWidget from ui.pyui.achievement_ui import AchievementWidget from ui.pyui.defense_ui import DefenseWidget +from ui.pyui.picker_ui import PickerWidget from ui.pyui.test_ui import TestWidget from utils.function import is_frozen @@ -12,9 +14,13 @@ class MainWindow(MSFluentWindow): def __init__(self): super().__init__() + setThemeColor(MAIN_THEME_COLOR) + self.setCustomBackgroundColor(BLUE_BACKGROUND_COLOR, BLUE_BACKGROUND_COLOR) + self.achievementInterface = AchievementWidget('Achievement Interface', self) self.defenseInterface = DefenseWidget('Defense Interface', self) self.aboutInterface = AboutWidget('About Interface', self) + self.pickerInterface = PickerWidget('Picker Interface', self) if not is_frozen(): self.testInterface = TestWidget('Test Interface', self) @@ -27,6 +33,7 @@ class MainWindow(MSFluentWindow): def initNavigation(self): self.addSubInterface(self.achievementInterface, FluentIcon.SPEED_HIGH, '达成度') self.addSubInterface(self.defenseInterface, FluentIcon.FEEDBACK, '答辩') + self.addSubInterface(self.pickerInterface, FluentIcon.PEOPLE, '抽答') if not is_frozen(): self.addSubInterface(self.testInterface, FluentIcon.VIEW, '测试') @@ -34,7 +41,7 @@ class MainWindow(MSFluentWindow): def initWindow(self): self.resize(900, 700) - self.setWindowTitle('建工工具箱') + self.setWindowTitle('教学工具箱') self.setWindowIcon(QIcon(':/images/logo.png')) def showError(self, title: str, message: str): diff --git a/ui/pyui/about_ui.py b/ui/pyui/about_ui.py index b08a3e7..dc06d57 100644 --- a/ui/pyui/about_ui.py +++ b/ui/pyui/about_ui.py @@ -1,6 +1,5 @@ from PySide6.QtGui import QDesktopServices, Qt from PySide6.QtWidgets import QVBoxLayout, QHBoxLayout -from pyparsing import version_info from qfluentwidgets import PrimaryPushSettingCard, FluentIcon, GroupHeaderCardWidget, PushButton, ImageLabel, TitleLabel from ui.components.widget import Widget @@ -13,7 +12,7 @@ class AboutWidget(Widget): self.logoImage = ImageLabel(':/images/logo.png') self.logoImage.scaledToHeight(100) - self.appNameLabel = TitleLabel('建工工具箱🛠️') + self.appNameLabel = TitleLabel('教学工具箱 🛠️') self.hBox = QHBoxLayout() self.hBox.addWidget(self.logoImage, 0, Qt.AlignLeft) @@ -52,10 +51,10 @@ class AboutWidget(Widget): self.vbox.addWidget(self.group_card) self.vbox.addStretch(1) - self.group_card.addGroup("", "PySide6", self.url_list[0], self.button_list[0]) - self.group_card.addGroup("", "QFluentWidgets", self.url_list[1], self.button_list[1]) - self.group_card.addGroup("", "openpyxl", self.url_list[2], self.button_list[2]) - self.group_card.addGroup("", "python-docx", self.url_list[3], self.button_list[3]) + self.group_card.addGroup(":/images/3rd/qt.png", "PySide6", self.url_list[0], self.button_list[0]) + self.group_card.addGroup(":/images/3rd/qfluentwidgets", "QFluentWidgets", self.url_list[1], self.button_list[1]) + self.group_card.addGroup(FluentIcon.LAYOUT, "openpyxl", self.url_list[2], self.button_list[2]) + self.group_card.addGroup(FluentIcon.LAYOUT, "python-docx", self.url_list[3], self.button_list[3]) self.version_card.clicked.connect( lambda: QDesktopServices.openUrl("https://cantyonion.site/git/cantyonion/DefenseTopicGenerator") diff --git a/ui/pyui/achievement_ui.py b/ui/pyui/achievement_ui.py index b86afb9..d3143a7 100644 --- a/ui/pyui/achievement_ui.py +++ b/ui/pyui/achievement_ui.py @@ -4,13 +4,14 @@ from typing import Callable, Literal from PySide6.QtCore import Qt, Signal, QThread from PySide6.QtWidgets import QVBoxLayout, QFileDialog, QHBoxLayout -from qfluentwidgets import GroupHeaderCardWidget, FluentIcon, PushButton, LineEdit, IconWidget, InfoBarIcon, BodyLabel, \ +from qfluentwidgets import GroupHeaderCardWidget, FluentIcon, PushButton, LineEdit, IconWidget, BodyLabel, \ PrimaryPushButton, SwitchButton from module import LOGLEVEL from module.worker import ARGWorker from ui.components.infobar import ProgressInfoBar from ui.components.widget import Widget +from ui import MAIN_THEME_COLOR class InputSettingCard(GroupHeaderCardWidget): @@ -56,12 +57,13 @@ class OutputSettingCard(GroupHeaderCardWidget): self.autoOpenSwitch.setChecked(True) self.bottomLayout = QHBoxLayout() - self.hintIcon = IconWidget(InfoBarIcon.INFORMATION) + self.hintIcon = IconWidget(FluentIcon.INFO.icon(color=MAIN_THEME_COLOR)) self.hintLabel = BodyLabel("点击开始按钮以开始生成 👉") self.startButton.setEnabled(False) # 设置底部工具栏布局 self.hintIcon.setFixedSize(16, 16) + self.hintIcon.autoFillBackground() self.bottomLayout.setSpacing(10) self.bottomLayout.setContentsMargins(24, 15, 24, 20) self.bottomLayout.addWidget(self.hintIcon, 0, Qt.AlignLeft) diff --git a/ui/pyui/defense_ui.py b/ui/pyui/defense_ui.py index 71866f1..1e2142b 100644 --- a/ui/pyui/defense_ui.py +++ b/ui/pyui/defense_ui.py @@ -3,12 +3,13 @@ from typing import Literal, Callable from PySide6.QtCore import Qt, Signal, QThread from PySide6.QtWidgets import QHBoxLayout, QVBoxLayout, QFileDialog -from qfluentwidgets import GroupHeaderCardWidget, PushButton, IconWidget, InfoBarIcon, \ - BodyLabel, PrimaryPushButton, FluentIcon, LineEdit +from qfluentwidgets import GroupHeaderCardWidget, PushButton, IconWidget, BodyLabel, PrimaryPushButton, FluentIcon, \ + LineEdit from module.worker import DTGWorker from ui.components.infobar import ProgressInfoBar from ui.components.widget import Widget +from ui import MAIN_THEME_COLOR class InitSettingCard(GroupHeaderCardWidget): @@ -61,7 +62,7 @@ class ExportSettingsCard(GroupHeaderCardWidget): self.exportFileNameLineEdit = LineEdit() self.startButton = PrimaryPushButton(FluentIcon.PLAY_SOLID, "开始") - self.hintIcon = IconWidget(InfoBarIcon.INFORMATION) + self.hintIcon = IconWidget(FluentIcon.INFO.icon(color=MAIN_THEME_COLOR)) self.hintLabel = BodyLabel("点击开始按钮以开始生成 👉") self.chooseExportDirectoryButton.setFixedWidth(120) self.startButton.setFixedWidth(120) diff --git a/ui/pyui/picker_ui.py b/ui/pyui/picker_ui.py new file mode 100644 index 0000000..8898a3c --- /dev/null +++ b/ui/pyui/picker_ui.py @@ -0,0 +1,6 @@ +from ui.components.widget import Widget + + +class PickerWidget(Widget): + def __init__(self, key: str, parent=None): + super().__init__(key, parent)