From e3140f656fe251dd68d723981b1a3d90c8c881bf Mon Sep 17 00:00:00 2001 From: Hatanezumi <13630961608@163.com> Date: Wed, 5 Apr 2023 18:22:17 +0800 Subject: [PATCH] v1.0.3 --- src/AutoProcess.py | 32 +++++++++- src/__pycache__/AutoProcess.cpython-310.pyc | Bin 2380 -> 3572 bytes src/__pycache__/main.cpython-310.pyc | Bin 16568 -> 18482 bytes src/main.py | 66 ++++++++++++++++---- ui/MainWindow.py | 23 +++++++ ui/MainWindow.ui | 25 ++++++++ ui/__pycache__/MainWindow.cpython-310.pyc | Bin 8001 -> 8423 bytes ui/格式转换.txt | 2 +- 8 files changed, 134 insertions(+), 14 deletions(-) diff --git a/src/AutoProcess.py b/src/AutoProcess.py index 3d7ea82..62bd22a 100644 --- a/src/AutoProcess.py +++ b/src/AutoProcess.py @@ -5,7 +5,9 @@ @Contact : Hatanezumi@chunshengserver.cn ''' import os +import winreg import requests +import ctypes.wintypes def get_mods(base_path:str) -> tuple[bool,str|list[str]]: if os.path.exists(base_path) is False: @@ -45,4 +47,32 @@ def get_cloud(path:str, target, arg): res = req.content target(arg,True,res) except Exception as err: - target(arg,False,err) \ No newline at end of file + target(arg,False,err) +def get_ra3_path(base_reg_path:str = None) -> tuple[bool,str]: + try: + if base_reg_path is None: + base_reg_path = 'SOFTWARE\\WOW6432Node' + key = winreg.OpenKeyEx(winreg.HKEY_LOCAL_MACHINE,base_reg_path + '\\Electronic Arts\\Electronic Arts\\Red Alert 3') + dir = winreg.QueryValueEx(key,'Install Dir') + return (True,dir[0]) + except FileNotFoundError: + if base_reg_path == 'SOFTWARE\\WOW6432Node': + return get_ra3_path('SOFTWARE\\') + else: + return (False,'未找到RA3根目录,你确定安装了吗?或尝试修复注册表') + except Exception as err: + return (False,err) +def get_mod_path() -> tuple[str,str]: + ''' + 返回文档路径和mod路径 + ''' + try: + buf = ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH) + ctypes.windll.shell32.SHGetFolderPathW(None, 5, None, 0, buf) + if buf == '': + raise Exception('目录获取失败') + documents_path = buf.value + except: + documents_path = os.path.join(os.path.splitdrive(os.environ['systemroot'])[0],os.environ['homepath'],'Documents') + base_mod_path = os.path.join(documents_path,'Red Alert 3','Mods') + return (documents_path,base_mod_path) \ No newline at end of file diff --git a/src/__pycache__/AutoProcess.cpython-310.pyc b/src/__pycache__/AutoProcess.cpython-310.pyc index 82e1e836eae26cc2ed21a7dcd4f3dc1992538b82..8037a5701245913f06f35634725e17b96ce46005 100644 GIT binary patch delta 1447 zcmZWoO>7%Q6rPz~uh)N@G=$Qm5w(hhFtioahyxs`No-QJaY_@kX=j z1X~V9G?Y{de>F*^6e?S7rK+mZR6(k!)b_xY8;HZ6v#z;whqvn_5@M`*fBVh6=l8z( zt?%!{iV=wf5v)H(j?<0s_sUTH9(WX~h+;}~tYS|Sm3UfE1y75rj|xnpBJ(quNi4vm z0rVcqlL3?$sgFv_q8g-rK*%hxhoWQ`A<+O00wP31Ov)1)rV;SM^f{`q`2MB4m-W!z zWuF@HE|FX~q#*PF?SmrX)#D zrU5XGsNaK0l_W+>0!Gy!m1}}~+(l4`eI`uq>P5VWVu5tEe{wuEl}St_&u7LnZ@n2m znKme^9y_1ZS6St(Rej5O zsdImA=jo<%>+AOR9q00Dr*$V4^V`y5p#;sg1LO0obcWR{$xrRR(KE?u?d6niAIqPUe>`XoQ2R>&D*)Rg z#0nVIBYPw$3N4QkMX~5>O78oBE!0rU=M7whfgiT~)OQJgforHJFX0R-9l~{w5mulW zY=%4;1{tC7kXmqj0C}E&08zOmEa7R_2PAL|9uGuF4cAEC<$tLB3e*#f!s|lf<<{@f!TgmS||YXV}dO}Mq8nK)p|tPeeTeWE^q4pWk;7)dtVc9 zx!DhbhzdRk?2vH~OZZjX3l^V%4>6pM_1Jz*gDjfXt?M0#^EW`)J>5>6*!#yk=|%<9 r;Mr510-!@=adCT+ApmS%M{> zk!y1Y%VkDJnaMG1QyFC^e_~t3D6x4idmJO9`s61lh{t|+^GXO$glx~qPK}<%aVCo5o46P zApr^{Cdq3E5Fo2*%1ofcG$=Hbmco?M3tFJmrjWX*e)E$MC>&NtzG|o~^lgTW;Q-n|I)xT2oSRsor@ED1%+O=d#>$xxOML9V4)_ zQeS1PPD{7QFuo3cYa&SBO{Iu*5ZA7!Ho&#|({|>K4Y7rb*6M+l?JS zxhyyPl9+YnW({JtJU1IOwgKfN*am0YsjnKofqL}K!#AcReV4xbpyi;2mQn8s%Mm#x z8++1Ho@!2>YVQ|N`SMgZ%|=Bf$cnjx>TPl|GT~sMzYY#uNYyI-So_p@v%V(}#xb)%WZzk(t=YzAx2bnW7_S>#aoxgU@=)U{N-%td9 z)mP20`nEPum+x7HJQRu@(gq?d2u7Km{Ak63uFtFm!_i21M5F5LT%&QCy zJe?&`@*`(L(>KOK2cjBfSed5daEQesu|upIXP(`9C`Ln!X3x)hh2wJS5~dZDCiuNo zi}~|au@x56n$V&LP5W4gfqIkZ7l~OCgu{griC~bm0W)hyNCL#+ml)zVR|j~i+FR}= zcH$I251@-ICN4R1q52L&D4*xQWeLV`!rE~latJVbS0rF5gpx&IGa$1Oc(DEa3IAgo zAIIT1fawY+8Je>-MzwLlV>+Udgia$&X4g#1b0Q*|%U4u(GTIPV4@?`UPBZuqUUbuJfQH{MKWZV{befz6O83qWHuuC|;j8HhjZk!5Br*QN`1Yu-Wu&F@8X6<@y+AiKU zzl^7sym8w-NQ~*5&7~7K!dzmf0Zi+Nc2|OVaV}hR9!J6*+i7#x zLfs!)Un6OrZmS@d`IWYty+6S%afF}Z=x4mX{dDQeIP5_<%U^D;$1F%0;KcC;dSoXH( zr&jwnm`*%HD6EH~(IRVv*^7|#EJ8N|I$^pbazS6}rPTveb)e_aIE13@L1 z*SrZe^VXXC7GfH+W&qQ{w6SO?tg)52^bP_l!ldI9-T(5wk1K*)=>HQ>UH_J{4=D&x zWXo|be{QYY9wb2dYyQyMt>kz7-L=j3Un1+TPOtNm_jt{^R%jL~Ci`J6@elwsND?I@ zGIPU-7&4WyTf*K&w;0ff4nqfcgro?yK;I}s-?&(}8PEYj_eiJ>8amss1Ao}iAs2E$ zC#a;bA1u+GMk%bgsGT~X!4n+V-nHiXJGbbHK}D81pbUzOAln=<4GpLKJ)a+Ly2YiV zc(53(O$_jcg$vw;<^tLj{%lLl-ZFLuS?))81VL2w=U#k|BZ(+?ar=pzG=BwRv~XYC zbsHB3gU}ci^(~)KKHb@b!NNp2a5>@KZiSzV)DlIu6F>3E6P>eIeJN1E|KU@z@t6Qk zT{1|nsmCVX0&|RlB^L#fi$YT_3KsCGb(Scg_Z7Xwz{b0j+NfQ4A1I5OYnOpB2gyV# z7tN|;P`o`i&2;?X&viVs1nBs!o~)-IMu(k5IE65q>6fr?-w{5dyri7Ifl;m zfF5to(RR7uW>+CTqjCQ2z`RK-P&(izGXDoKfU^r0U%nbJhVGOlCEXtM=w*f%mFB`B z7>dFn8*@-ReD^>|=V#6HrKJ%o+c#ZU#@v+n3d%)m_AXV;#a4G{Rm}?vKnljSyn~H z4owGo0s~zOOit*Xy+nb^!uqNuc2QX_*#|3Ld15IZcg1WHSQl`^>)-%91_Ldu8ZB6W z;73UE(RFPbj^gkb0_qaCGHb*UzAxCL2tP)sL#Rh+KxjfZj&Lvk^SZ{0`*7Hb@Kpri z$Om~zPfg7QoVO!{0PrG9bOR`mz)C;w?`d;-WJOloUMCCjL{GRH$>3{aD1O+qYU2@I zwQ1v8I2e#k{&7#s+7kpM;6EGii$Wnj!ajmYpw)B)gYb0(-y-6T`XMZ`^$34N*o*KN zzN_~^w^^bOF)c*#L&(cN?Oj#(bKLAfcmtsdL0ph%3i}BDOERC2^tJLw`)aMyq^se7 DEw;VC delta 3230 zcmaJ@X>3&26@GU%kH<5%G2?ykf&nvl$=GHG8}CaD1Z zd*__{o%7B)_uTj1E9c1VCrNhH<#H(Scm17Z?BD(8vpppDe9e^^lU7PSj4->lY_yD) z5rt*aa^|2FEQ?k$Ctc25w2EcZ6)cCYWVv(|TSBW@9$np|u%*m>Qekd2Z`Mq`py#s! z&innyC)zR7(*GH1A#A7Cv$ zTiq7YkUXDRY9drz&-x!+1j0xOSARp`D%gYFAAhMVTeaT7>u!|M|3nZm5_vrU`ktwfnNG0PDXe^cMU zGG@sMGHnWP1n*6Im57HZ_^+G8mV`~>X26*(%wDX_6J{&Mr7bM8SYZy9#hmk2aNN3I zi8xX&(@J=gw42c$!gQON5>kduAhj?T;5NNA(FVM&^O$lwNbMMxx#G$>!b|mzMCY`^ zvZXx-?$;6SnnA$KBRP6^q6e0oESD`g3E{yRNS#psya_5(!o7(;mX~-Oq^x-|Po%9s zu^sf^>#;IMhv%-k&hjQO~E z+MF1g$5y3i1wc!&KJ|ZCg%4PJ{u_%aFaFD7a!ifU z{2*5Yy6TTdphl+p55vA&MpR8}YNWY?y*;Yl z9o3l1cR_`Fc{QeCJr>a7D$Qp1%k^XVhC^n@c<7jF*fZ3~u@H|&#P#B>tN9X{{b5!2 zL+LTYg2?gQ85!dN9tlMb^KGDsu9DSOz8R&_l8D=4SYoO+Y}m#E9J)%)kh}O(NvT5z z#u)r!!y>2DD_Tk&MJAF>3Wy#4oy0~OiQ8l&4v>-uN{t(r`~|r1s|epfKqvk( zfMFhsj-}kpi*C4dQ}kEhf>m7>4EDc-I6gs9?2E86nYeB6&zWkQs$to2fRkcae8Frdll zq1FLa=ac+6(7d)(UUDC=CdXEWNkRH_5yOo8a0rOq;`NqpvA%ly%tO)fKBoZ;HwVWAul1p(eGLpoR!q&( zAi6wKTnJb5illG#UP2CuQ{H}GI;3m{HePNi3^I0~x&n;(heMj`j|4_lep{H=yw~?_ zWMPTkO#W4rZy=;|A3#;6h^6vZ5oC6YLG3WDG9Qts$`=*QOT?L)9I?OV?aw}m)bxa% zLKP>Bp9L^1N7Ts}&qZB!=0%ib7am8c8KD*7C4dJLjD{q_WpSeRw}o=3I#KTdFsyn= zhsWv-5v|*w`#PFsG2cV!`{KR23)^m?*n)t~GVC1#eM5a6ZQH56V{u0Aj|2wfkH$z| ztLKEgAw0gLa|bU1Ng0DDE^C zxnxnM)c#(EeO#3+ZiAZaT+JITZ-XKZu3jcK7UhU| za|wAzoNHcTdlP+rD!$X~A-@uLn`>6`2J|xV09Lnbb7w6%Au75G z^Jw;<9*D32XYFxaht_;ov~(5OW|4PN9Ozo!`V@*a0EWx&4{Cu}EC_F7zn|CQf`lt5 z)gc@Nh{7+n7Qn9L5_`M&c~`Baz{C#Lc)h!SEH1 xBSv#l-yQY$zc2W+VzOs_`47-Vp2{DhRE!`W1qV_30KVVbiCyIMmYbaM{{UHwUuggU diff --git a/src/main.py b/src/main.py index 757a9de..705f889 100644 --- a/src/main.py +++ b/src/main.py @@ -15,7 +15,6 @@ from PySide6.QtCore import Qt, QStringListModel, Signal, QObject from PySide6.QtGui import QColor,QIcon, QTextCursor from ui.MainWindow import Ui_MainWindow from threading import Thread -import ctypes.wintypes from src import AutoProcess #常量 @@ -116,7 +115,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): if os.path.exists(os.path.join(os.getcwd(),'ui','ra3.ico')): self.icon = QIcon(os.path.join(os.getcwd(),'ui','ra3.ico')) self.setWindowIcon(self.icon) - self.version = '1.0.2' + self.version = '1.0.3' #-------------------------- #连接信号 self.comboBox_mods.currentIndexChanged.connect(self.__comboBox_mods_changed)#下拉框内容改变 @@ -132,6 +131,9 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.pushButton_refresh.clicked.connect(self.__on_pushButton_refresh_clicked)#刷新按钮被按下 self.pushButton_Download.clicked.connect(self.__on_pushButton_Download_clicked)#下载按钮被按下 self.pushButton_release.clicked.connect(self.__on_pushButton_release_clicked)#发布页按钮被按下 + self.pushButton_changeDir_RA3.clicked.connect(self.__on_pushButton_changeDir_RA3_clicked)#切换到RA3目录按钮被按下 + self.pushButton_changeDir_mod.clicked.connect(self.__on_pushButton_changeDir_mod_clicked)#切换到mod目录被按下 + self.pushButton_localRefresh.clicked.connect(self.__on_pushButton_localRefresh_clicked)#本地刷新按钮被按下 #-------------------------- #变量注册(全局变量) self.select_mod = '' @@ -139,19 +141,17 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.listView_local_qsl = QStringListModel() self.listView_Network_qsl = QStringListModel() self.fileDialog = QFileDialog(self) - try: - buf = ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH) - ctypes.windll.shell32.SHGetFolderPathW(None, 5, None, 0, buf) - if buf == '': - raise Exception('目录获取失败') - self.documents_path = buf.value - except: - self.base_mod_path = os.path.join(os.path.splitdrive(os.environ['systemroot'])[0],os.environ['homepath'],'Documents','Red Alert 3','Mods') - else: - self.base_mod_path = os.path.join(self.documents_path,'Red Alert 3','Mods') + self.documents_path, self.base_mod_path = AutoProcess.get_mod_path() self.cloud_mods = {} self.cloud_mod_source = (None,{}) self.isdownloading = False + self.ra3_path = AutoProcess.get_ra3_path() + if self.ra3_path[0] is False: + self.ra3_path = '' + self.pushButton_changeDir_RA3.setEnabled(False) + QMessageBox.warning(self,'获取RA3目录失败','无法获取RA3目录,原因:{}'.format(self.ra3_path[1]),QMessageBox.StandardButton.Ok,QMessageBox.StandardButton.Ok) + else: + self.ra3_path = self.ra3_path[1] #-------------------------- #初始化内容 self.mods = AutoProcess.get_mods(self.base_mod_path) @@ -352,6 +352,48 @@ class MainWindow(QMainWindow, Ui_MainWindow): webbrowser.open('https://cloud.armorrush.com/Hatanezumi/RA3_affiliated_mod_downloader/releases') def set_plainTextEdit_updatelog(self,text:str): self.plainTextEdit_updatelog.setPlainText(text) + def __on_pushButton_changeDir_RA3_clicked(self): + if self.ra3_path == '': + self.pushButton_changeDir_RA3.setEnabled(False) + return + mods = AutoProcess.get_mods(self.ra3_path) + if mods[0] is False: + QMessageBox.warning(self,'获取mod列表失败',mods[1],QMessageBox.Ok,QMessageBox.Ok) + else: + self.base_mod_path = self.ra3_path + self.mods = mods + Process.set_comboBox(self.comboBox_mods,[os.path.splitext(os.path.split(mod_name)[1])[0] for mod_name in mods[1]]) + #显示当前目录 + self.lineEdit_nowpath.setText(self.ra3_path) + def __on_pushButton_changeDir_mod_clicked(self): + self.documents_path, self.base_mod_path = AutoProcess.get_mod_path() + mods = AutoProcess.get_mods(self.base_mod_path) + if mods[0] is False: + QMessageBox.warning(self,'获取mod列表失败',mods[1],QMessageBox.Ok,QMessageBox.Ok) + else: + self.mods = mods + Process.set_comboBox(self.comboBox_mods,[os.path.splitext(os.path.split(mod_name)[1])[0] for mod_name in mods[1]]) + #显示当前目录 + self.lineEdit_nowpath.setText(self.base_mod_path) + def __on_pushButton_localRefresh_clicked(self): + currentIndex = self.comboBox_mods.currentIndex() + now_path = self.lineEdit_nowpath.text() + if os.path.exists(now_path) is False: + self.__on_pushButton_changeDir_mod_clicked() + return + mods = AutoProcess.get_mods(now_path) + if mods[0] is False: + QMessageBox.warning(self,'获取mod列表失败',mods[1],QMessageBox.Ok,QMessageBox.Ok) + else: + self.base_mod_path = now_path + self.mods = mods + Process.set_comboBox(self.comboBox_mods,[os.path.splitext(os.path.split(mod_name)[1])[0] for mod_name in mods[1]]) + #显示当前目录 + self.lineEdit_nowpath.setText(now_path) + if currentIndex + 1 > self.comboBox_mods.count(): + return + else: + self.comboBox_mods.setCurrentIndex(currentIndex) def init(): app = QApplication(sys.argv) main_window = MainWindow() diff --git a/ui/MainWindow.py b/ui/MainWindow.py index a13eadb..a0a7e69 100644 --- a/ui/MainWindow.py +++ b/ui/MainWindow.py @@ -126,6 +126,21 @@ class Ui_MainWindow(object): self.verticalLayout_4.addLayout(self.horizontalLayout_6) + self.horizontalLayout_8 = QHBoxLayout() + self.horizontalLayout_8.setObjectName(u"horizontalLayout_8") + self.pushButton_changeDir_RA3 = QPushButton(self.tab_local) + self.pushButton_changeDir_RA3.setObjectName(u"pushButton_changeDir_RA3") + + self.horizontalLayout_8.addWidget(self.pushButton_changeDir_RA3) + + self.pushButton_changeDir_mod = QPushButton(self.tab_local) + self.pushButton_changeDir_mod.setObjectName(u"pushButton_changeDir_mod") + + self.horizontalLayout_8.addWidget(self.pushButton_changeDir_mod) + + + self.verticalLayout_4.addLayout(self.horizontalLayout_8) + self.comboBox_mods = QComboBox(self.tab_local) self.comboBox_mods.setObjectName(u"comboBox_mods") @@ -140,6 +155,11 @@ class Ui_MainWindow(object): self.verticalLayout_4.addItem(self.verticalSpacer) + self.pushButton_localRefresh = QPushButton(self.tab_local) + self.pushButton_localRefresh.setObjectName(u"pushButton_localRefresh") + + self.verticalLayout_4.addWidget(self.pushButton_localRefresh) + self.pushButton_save = QPushButton(self.tab_local) self.pushButton_save.setObjectName(u"pushButton_save") @@ -364,7 +384,10 @@ class Ui_MainWindow(object): self.pushButton_L.setText(QCoreApplication.translate("MainWindow", u"-", None)) self.label_nowpath.setText(QCoreApplication.translate("MainWindow", u"\u5f53\u524d\u76ee\u5f55:", None)) self.pushButton_nowpath.setText(QCoreApplication.translate("MainWindow", u"...", None)) + self.pushButton_changeDir_RA3.setText(QCoreApplication.translate("MainWindow", u"\u5207\u6362\u5230RA3\u76ee\u5f55", None)) + self.pushButton_changeDir_mod.setText(QCoreApplication.translate("MainWindow", u"\u5207\u6362\u5230mod\u76ee\u5f55", None)) self.label_nowdir.setText(QCoreApplication.translate("MainWindow", u"\u5f53\u524d\u6587\u4ef6\u5939:", None)) + self.pushButton_localRefresh.setText(QCoreApplication.translate("MainWindow", u"\u5237\u65b0", None)) self.pushButton_save.setText(QCoreApplication.translate("MainWindow", u"\u4fdd\u5b58", None)) self.tabWidget_Main.setTabText(self.tabWidget_Main.indexOf(self.tab_local), QCoreApplication.translate("MainWindow", u"\u672c\u5730", None)) self.pushButton_refresh.setText(QCoreApplication.translate("MainWindow", u"\u5237\u65b0", None)) diff --git a/ui/MainWindow.ui b/ui/MainWindow.ui index caab5f8..3b18ca3 100644 --- a/ui/MainWindow.ui +++ b/ui/MainWindow.ui @@ -134,6 +134,24 @@ + + + + + + 切换到RA3目录 + + + + + + + 切换到mod目录 + + + + + @@ -157,6 +175,13 @@ + + + + 刷新 + + + diff --git a/ui/__pycache__/MainWindow.cpython-310.pyc b/ui/__pycache__/MainWindow.cpython-310.pyc index e79f5366f492e2f450ae7cec0f0f47f3b7c8d196..6fbd21bddc5b62b9350ec8c2f207f2caa4b1cf2d 100644 GIT binary patch delta 3017 zcmZ`*OH7nk6rRf<8L7x?hQ}bvC?c;xMU;mO2-1S`euxMt4E#Tj5g9W4qqZTLv@Ghz znD%PZq_+KWT^kz~O-!2Bt*dU_u<54gwq119O}}&Q&p-cQ3gP6O?|$F8_nv#s46oYW zbsUanWo5eX(|$RqmG%B~c-<{tZhz+PbSE-5T^p{M$_-bf(iGZ}Eg@V+A)VO3jE!1R%lH8t>5=302QrbuYVY#ODmWm=X^3&IN`by*54 z$gDaopdB|(N6z5y>}EQSTMu@?JO^9PjO0ZcfHfe`iIhAITZz>Bo(JtbXyqxi^H%f$ z-y~o~9`gd&2ep%1X{ec->(~gS5&8<^7?~7t9h=}a0YAlfj*T}b;5K7{%fo)2kst9| zTQr$elV%nj;0;<3w}7vn;Qb0*My0I~e>N%%`E_hv_ot4ppg^3Ey@1#e%tSH2f*I`9X9EB({y6sFo@OqGm zyNCTNMt9_@rRgzy5%t*_=(0VWLA^~s;{F8W=NMFX8vr-}tbws)?FNAl0^jSc0j|m* zv&ylit~La32&@Z)vtOY#TE0>Yu_F1*iDA%&A!$mX4O>w^-+O>X>VPBQkASbbEP23D z;G@8~C746^9c3kru{z)wyfLu2+lZCmdyHAzjhNT8RxLymf+sYj6YwUmNt=~*!n~nzm$8D5HNgt1!lIH)!kvVK+svj-S_#za_gj$~&Bd76uRlg~m;r6jZPW+C~=+HTf#Hq~rO zQ%!UAW;ugusxZ`HsJj`X=TTYb;LQQ&285povvh7BZ5~VWpk1*xSFHJcEDbCTti4WG zER9(-XKG6wo(@*8l}k52G%iQ1YbCIh96gml=LGaBD!~H01ti!TA;ns-(y8i&tw=q} zlzJ5CGWdEPUKQpdkaY5mr46Azi8eUCXhVk&bi! zvvMb@$+qmuqC$smB|0Bo8POMF`uftgp8YIMM7KS89^t=&FXh-(GQDKV$n=rvmnHcZ z6GP+1{u1muk%#9he94B*^%su&?w?y2RFTImON}q2~yp+1{p{y;) zk$?G$w$lolMOw9cJ5*RG?i?_LnWhOXTXSu>tyj!7_s|>%nrEZA4m98Nq7(9YGz+$b zl`W4M>SL+U*5$}oMZRFZLtSjIc^#l&kE1w7HxUBLA#E9(m-wo#Bv3DPQ{`TRs-3Ko)Fz>$karc)e@e~--qG0)( z-(Rx(;ODnry@+Q(_~)LfKEa{9=Lac=p2 z-Oi29{mQM%U3!~zJVjCR*2t`rNjB*{3RlS7mv4@o4Sqqcw9RAk9>K(g%e79!>lK-4 z1!)C>er2$9)Bj|T;*fEI$MSWlU)Ev*xE$&_jhq8(2wDiUAO+mPF}?ty8_>~RmJ Hdo%t6uhAnd delta 2594 zcmZWrOHW%z6!zEwIm8ebYy-ylK>z~@B!GFCN5H{NYV$DRVS_Qj7p_BaP(sZOD^yE~ zR7Faoq#dd2OMgJ6%8M?#Y1LJi-Lj~<>0?uM)m2)l=bRa?4MF1QJKucg%$Ymiko*z( z;db5A+S(cu{Ji|cqekw2Q+H@#ou%iNJCp4{qsjjPD)u-La_rh=Ai%Zb+CiS@m@g^x6jXwQ=`gK-R{pT9>%j}Bo z#8R1A^#LqY11Dw}#_|Hj+ZqIB5C&p0FZq71i%S`jOEB&lsf^;<{px$DmvoO&ll=TpYMtq$_{dS>R`Z zKXY50hMgrHa<`|79~#zz8cVz&kA@Sb~%TT3KC z`!11W8Iagy1<(p?LOvtBs*;-k$7rk-swf{j2`fpcATt@Nq#R3JcT8sDEf)vRJ?0b? zrJw;hM8n6NqQ|@jXbt$=w4u1@b>P;4n<5UspwOlPrGY>5+&Yb#zM$Fw)rQWpYDCT> zWE(PDqbpjcBDAJxodJ}A)@Me~oLQ4Tbmp8h*J#@e57=5+ici@(Am(iTefk?J+GU|# z7TSTgslg_dWNA};YeJ;}Qb2W2suaEQttoo>t%-Vt>hV%i{BN7HDA;XTEe^IRGjRzi zaR*RQO%qsYmFYXcTtcj=$BgbF2TTrT5tqpHhnS0A`tC6kC~wst38QFxdfp~z)wFEt zj+Y{JUohTc50*CUV9&>;|LU#miXZ+(D#S3vxz914nFn}Ut*GjXvRz0Zzlh;Jh9wAT z`%$i-?d>T0%LmF%uCO&wSjM##467KD7*ZJ4Fsx$;Vo3Av9Bpia|Kb>E&mggh;Q@v% z3|R~chHVTxJmd_vJp_1aJ?Rw1Tpq+EaIP zTHyu?H2$MA&E9aYE5W|vPh78gZKJEy-8jh1f0|1Vni|>22k;&3dOgI36Q(iUtTOeg zYC5sVH|)@>Bx@&D_{GWfW@pi5tkqYnH5zO~1>0n>jtaKfV4W4L+hA=KY>UCV1k0!0 zEeX3`J^}oXK+f7k3h`ISYt%JYbn_XkyMp!e@7>Noz*zHCthE_zEC1E)T=iD0RZh`v zOyMJin4&|ss21tc4tP0b92A&r>gS)e1lR)qy5)#3d7Al=r~Yy^+~jXBzy1A7{;B63 z>*CK_^K72~+j=cY*1O<3G90-oiw+tptEQ@Qq& G-}^tMX`H_R diff --git a/ui/格式转换.txt b/ui/格式转换.txt index 83824a1..dcfaa57 100644 --- a/ui/格式转换.txt +++ b/ui/格式转换.txt @@ -1,2 +1,2 @@ -pyside2-uic [你保存的文件名].ui > ***.py +pyside6-uic [你保存的文件名].ui > ***.py 另外别忘了将生成的文件另存为utf-8 \ No newline at end of file