From 80b19f81b493b02838143e0d0ffd085077d8a22a Mon Sep 17 00:00:00 2001 From: Wulian233 <71213467+Wulian233@users.noreply.github.com> Date: Sat, 16 Dec 2023 12:12:10 +0000 Subject: [PATCH] Add files via upload --- dialogs.py | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++ icon.ico | Bin 0 -> 67646 bytes main.py | 162 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 340 insertions(+) create mode 100644 dialogs.py create mode 100644 icon.ico create mode 100644 main.py diff --git a/dialogs.py b/dialogs.py new file mode 100644 index 0000000..fb1318c --- /dev/null +++ b/dialogs.py @@ -0,0 +1,178 @@ +import tkinter as tk +from tkinter import ttk +from functools import partial +import sv_ttk + + +def show_message(title="Title", details="Description", *, parent=None, icon=None): + return popup( + parent, + title, + details, + icon, + buttons=[("Yes", None, "default")], + ) + + +def ask_ok_cancel(title="Title", details="Description", *, parent=None, icon=None): + return popup( + parent, + title, + details, + icon, + buttons=[("Yes", True, "accent"), ("Cancel", None)], + ) + + +def ask_yes_no(title="Title", details="Description", *, parent=None, icon=None): + return popup( + parent, + title, + details, + icon, + buttons=[("Yes", True, "accent"), ("No", False)], + ) + + +def ask_yes_no_cancel(title="Title", details="Description", *, parent=None, icon=None): + return popup( + parent, + title, + details, + icon, + buttons=[("Yes", True, "accent"), ("No", False), ("Cancel", None)], + ) + + +def ask_retry_cancel(title="Title", details="Description", *, parent=None, icon=None): + return popup( + parent, + title, + details, + icon, + buttons=[("重试", True, "accent"), ("Cancel", None)], + ) + + +def ask_allow_block(title="Title", details="Description", *, parent=None, icon=None): + return popup( + parent, + title, + details, + icon, + buttons=[("运行", True, "accent"), ("禁止", False)], + ) + + +def popup(parent, title, details, icon, *, buttons): + dialog = tk.Toplevel() + + result = None + + big_frame = ttk.Frame(dialog) + big_frame.pack(fill="both", expand=True) + big_frame.columnconfigure(0, weight=1) + big_frame.rowconfigure(0, weight=1) + + info_frame = ttk.Frame(big_frame, padding=(10, 12), style="Dialog_info.TFrame") + info_frame.grid(row=0, column=0, sticky="nsew") + info_frame.columnconfigure(1, weight=1) + info_frame.rowconfigure(1, weight=1) + + try: + color = big_frame.tk.call("set", "themeColors::dialogInfoBg") + except tk.TclError: + color = big_frame.tk.call("ttk::style", "lookup", "TFrame", "-background") + + icon_label = ttk.Label(info_frame, image=icon, anchor="nw", background=color) + if icon is not None: + icon_label.grid( + row=0, column=0, sticky="nsew", padx=(12, 0), pady=10, rowspan=2 + ) + + title_label = ttk.Label( + info_frame, text=title, anchor="nw", font=("", 24, "bold"), background=color + ) + title_label.grid(row=0, column=1, sticky="nsew", padx=(12, 17), pady=(10, 8)) + + detail_label = ttk.Label(info_frame, text=details, font=("", 15), anchor="nw", background=color) + detail_label.grid(row=1, column=1, sticky="nsew", padx=(12, 17), pady=(5, 10)) + + button_frame = ttk.Frame( + big_frame, padding=(22, 22, 12, 22), style="Dialog_buttons.TFrame" + ) + button_frame.grid(row=2, column=0, sticky="nsew") + + def on_button(value): + nonlocal result + result = value + dialog.destroy() + + for index, button_value in enumerate(buttons): + style = None + state = None + default = False + sticky = "nes" if len(buttons) == 1 else "nsew" + + if len(button_value) > 2: + if button_value[2] == "accent": + style = "Accent.TButton" + default = True + elif button_value[2] == "disabled": + state = "disabled" + elif button_value[2] == "default": + default = True + + button = ttk.Button( + button_frame, + text=button_value[0], + width=18, + command=partial(on_button, button_value[1]), + style=style, + state=state, + ) + if default: + button.bind("", button["command"]) + button.focus() + + button.grid(row=0, column=index, sticky=sticky, padx=(0, 10)) + + button_frame.columnconfigure(index, weight=1) + + dialog.overrideredirect(True) + dialog.update() + + dialog_width = dialog.winfo_width() + dialog_height = dialog.winfo_height() + + if parent is None: + parent_width = dialog.winfo_screenwidth() + parent_height = dialog.winfo_screenheight() + parent_x = 0 + parent_y = 0 + else: + parent_width = parent.winfo_width() + parent_height = parent.winfo_height() + parent_x = parent.winfo_x() + parent_y = parent.winfo_y() + + x_coord = int(parent_width / 2 + parent_x - dialog_width / 2) + 250 + y_coord = int(parent_height / 2 + parent_y - dialog_height / 2) + 50 + + dialog.geometry("+{}+{}".format(x_coord, y_coord)) + dialog.minsize(600, 300) + + dialog.transient(parent) + dialog.grab_set() + + dialog.wait_window() + return result + + +if __name__ == "__main__": + window = tk.Tk() + + sv_ttk.use_light_theme() + + window.geometry("600x600") + window.mainloop() diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1a203138c706a5b18a597d17132dbcc22aed2938 GIT binary patch literal 67646 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%0D0e$!=Lzn_lY0jP}DRsd+8^uHi26 ze7=H@XFI+}at)9x4uA28Y5mvyuSZunhW+;w>ch=|XHxlNW6u|tAU3VI9$ELtbtcE* zs=*fDhdj86x7yU|EtXJTW#Q|5vcDtauQlHJ{e-*Zyqfj_srAF=6bEE~^#5R*^uS2= zs|>}@aWlDjC9nR@G73uUI^yBOv5BWrcXL+fL|Ys*j#xT!pV-{G_}hIxSA2oO{aC55 zZj=f$=i-D#j@b&s%t@0cOj*;)Vcg|CGyy6Xb9$zGnhjko(+pfjf>*RJQ9>24c8gLcx{LFvC%j=j$ z%s%g1A$Dump|-F`uF2mo+5bfDUG^qizph@0{5|qDYu<|=ZZG!UZZ+%*uL*l(fw1@N z%rc)2@DAhd{@go>V^Amd2XSx&MtNNSQ#(a@vF^l6gDtUNlEo#B@@fJWS3h7`%T~kh zOdX ee(3o!9!WCjC$IUf4S>P`!@<-~RZ2hF}AVe^mVQksP}Le?$avsR;O?$08H* zUwz9iiW+V~SHRYU$1I6sFu?a@&m;0 zt(alsieG|xYYiDc>|NbB&HdLFJYf^Mr&HepA0Ix&*~E2=nfsHvve%(&m_?F{9-WwL z#j9#A1V3Sa_N>W{9npN$vbVos-QZlfsyiI%=uyji zkGB)7$w%LiTGCLrJ*+X%0ZSprr2`kl-bB~INjIQ z*ih#Ejm&%DpI7na^Z)CNzp!*~DK%MGjo$4_5?LH!3&PPxA5J(1I7o@^Tp*>hrOm6ovPjNF1n!3 zc{p<^Iv%n3^P+9#fFk?V>_@#guDD?}hW5w@K$D$t6fBQmM>HYNH3sUC{q@v%P~1SV zqvLQ&?!BFSG5LY8FBOy8&-hXP=ufBATHz%LHW4m5#WC|P7ME!Pdpp=;*d2Rsbg@lY zyqa3jwKk&qUa!7G;%e$aGv~9J&%>z^-I3?NuouQ^PUm;y!0CVvf7Kcg_po?jB@evo z@Dt027!USA2M<~j_nX8RDE##wEVrb}X0hMqnYr+;h^~2%aiOuH^+&ND)pij-VQIe!Hj{keap?O+SEsSRDT+NE zy)Bu1*D2E%+LVRmHU)V-7Jsek_^5u*5Nf(4FcuPP;27apN5)@RySc8hAgt9S7u>ke zap5i89sZI5PHv=F#e+!$o!9e+ysi{izGQT)lDUMcJCjnI0dwYH=u^Lv_LSD6X>z zo?v9XSJwrb@&M~g13sLCatV&8e&D?4?6dX%=Y6huzk}Gs4)z~!hTA)b zxK18^iyZuWL$8b_rV(!GiDPX{(LB4UwA`lGZn4}|)NZL*Z)w!>Q0)%Yc8ROK&muQa z#}B`5N5|jkdTyQzTj8y-;befY)^V)?Y7T#mlN5BqWPAde`$@b`Bwm<=E->=Yhc*}f zpt;+BXIICMvr8`;U>R^{-iVKAII&dm=Z?fqm5T>O}N@Xx^m4A*;WZio0~<;T-n(1P8kx^l`nQy#&)e5SqS%0H@SOzdZT9AS+R z-@CZw|FG&sdzt+3qTuoD-%GbNIIV-ahFj3}2^JiK-@kMX_5C*5sMQ;6B=+5K)qPTq z=??M=c7m%{Gl2Xu)qLN}xKQq)*81b+P*5BM40zvt(+BT(rdyRU|$n~XnTh@k+He}gKVzc)=J13J&y02&vn1uB~`3)~em9&n_^iyz1F z{(9orgV7P<4%FEq?8lY6n=ESb9oFrdC<|lHU1B%lDm^lMx;MFWh3H_@$txAl=w#wb zg~VIshnoiH>{Rk^R4b&oQ<6<4xA%wa8!5Ul(aJ-MY(xAUdo*VSdAj%5YqKBme1Y#0 z%T?`>{j3@9;D7i4f6{N^f`9y$O*RZUq&gOZlk%-#^OLsdz5TZAgC+|`$B$vHPuaM| zhHl*C#cWep^V2ITEwjARhN-Qh<}>R-b|v=TdTN1pVEa!pUKneh3s>Q;F`zl_=D)Dl z8X>H8Ok+UJtq;-Q+ymWDwWWsO4~Y8H3Hy&jjn?n8PwhJR?SkMjQJteSWJG>_vy~q? zVHLmKXTwV>tSkG-f*Av`og*yn2jTFG#99`whx1ysBvospuoJ%ce~++&^TWM*lGDh? zn0g^~WxIesai59g6BN=4;CvpBk8r|;@#G?<+nj4g+JYP49w*nNI%f&|U~8=A_Dz-^ zS7?z*6YaLD$E{{Z6FjOXtPn1q+u*xO*!rx6G4F$xF1Lg#YPo{D>NYBduXuhg>%i!B zwb*{F2lxQ9SDpU)?{9-SnR+&R&1+$)-=TS}CVcf9bX=dib97ASwf)U{@5Y6C_j%YS zzM5l^_zcBmHI#8Rnq1g%M?SLrhNE`t-oyA(9D zSQcE0@0XaeYDmw*R=b&4vU2ifPzOq5q3~kzk2xm)T@g73Q!k^QP?r?D30aX%&G88C z5p-3e^%ykD!lx~^v5)_+&E5Z@S3hM$(^1Rd_okDJQN-^He)usPRHgd8HI`akOU*`K zO+VH3Q;vsM&u@*dm+wzC{!VxPyJvMaF+Wq^<#2c7roCP{1Zw(R{G#erS3LF5QM(x) zt(EK}Uiju-8?o+DyFR?Ze8EsYu^sob0ND zz1K0lk71ug`jJ1{I5@HLTRyRg`C zZW#kNTpZu)ap{rQFo-b_z~3kDPgO2x{yQ1a7I*jF;qTsmZVWIEq&q6FAdQwuO!-E5 zD)ZozDmwhJ%|868-2n%|0(dA&Autplotk*5{96g<%xOMh)8S;yYxvMI;l@p9I%3h} zE2(y|c+;cEV^J`p!I5Q_OMb-(=_tUv+*Tnz_F<@p?c|~J~kW4-ijNKed^VtR4z)|AMrO}XKFsj zlOL~mRRk>rJv0dYL%M7K&-fnR_rosjNA7(nIjyo!5^3jJ{{N%nFU%eO>IWhB-7(?c zgMDqi;j#>E#Vw3pIVZv>1e+n|PpW<4(-%~WFqC6jJA_{>P4)45lG}V8amb$J)2ddU zFz*ZYeTY#iXW<5N82aFkQ2aWIYb0+ZclsPY6u|#9<D|X`<`& z-d(SJ0>znwX@kJttsBxCC9mU7d}ayw5Y%ft3?c`mKipNp%x%wy1@6jK(AbdtNM(}X0 z{Z`ey9l&1OuNwbUYJsQVOGw0COv1K^Ew8nZjsIz*&_TUgZ~P{WfsWXOUwgQp%yC^W zEaiK0enmGQ+Fq}7^_k9h*9cGfs$5fCLQTir{dBIor|#k3w8tqF|CaRs0?r%o*pEE> zF9920_Mhzj)3yKpk@0uWwJlaB``%%y`?S56d{6#O_jKpGF(91fuT*n!DSf7MB@v1{{WN?rSXQn67tm zi(bs_p6q{948!@b^&5q~Pfnnl1n~Es+o@pgf9|Pb?ti|+-(l`>_V0C$YwlY2{cas_ zGG6C7{DrslLjU-M?yGA9`2YR$-97s=(K|d{?|)Ax#M7aAm?Qagq z|F6eb@W)89{BJd3r}Nx6ar0esUavKd^trCpx*(mvHNDqycfHR2y6AuUP2be!u+;xA ze1(zI<6W;~`b_6~xY4^c!{M&abdIhO*0T9MyTA3lj_W&gz19KQ|Kd6bIYautVnd1% z$!1VfjL3@@9zIsy;(Kw zjrMOkrsp%9bBEDXmpG%f>6riZW3c_lwrRST?xFK^y{=88Y480|e23y%n2ql!>X9E= z)cSkOXaCjy8B5{m;(rcT#r;wh|84!u^{Kp9(|AzJs=mk4$Qwvz93+wdpF-|HGPY&h zeOqksmWM3z!AC6op+{`cH?-IP?*4y0gD-0C+)%D@%^h>s>3Ozo?lX6;yHj3G`?8IVi^`t#+fOlFKU}oqRpwYS4Ta?wYp_SBJNo|E_nRx7WADUFYeT{6b0O z5++oVb4H5`^k@A!=$R*gc|4d42Q`=TBkVJ(YQHl4l}DOLKDqLV6KR3|+&l-#Up;^4 z=XLs<@IMpt-^m3h2izK<#&k_&EHW{CEAy%Kx_O zzwp`W;JxqJoQ>y@ zBt4Ag)_r0BxA1rPx%uyUcf7scU)~E_ou^~c|J3w4(9YpA029f4|K^PWaFPAj7FUP6 z>)U>Qs_)%>0{vfnCTHte2rK{fMz7mzr;6*zo`1If*TDDu_4xWa;D55?Byiqebn!F! zEZUpzCwu%%{+7VKz8Z|b=((OO&h4G|MfVPTcJ}c+-Dln&&g~sP-R}!r|MeOp?cv= Windows 8.1 + ScaleFactor = ctypes.windll.shcore.SetProcessDpiAwareness(2) + except: + # <= Windows 8.0 + ScaleFactor = ctypes.windll.user32.SetProcessDPIAware(0) + +root.title("KubeJS翻译工具 1.0") +root.iconbitmap(bitmap="icon.ico") +kubejs_var, json_var = StringVar(), StringVar() +kubejs_entry = Entry(root, textvariable=kubejs_var) +json_entry = Entry(root, textvariable=json_var) +kubejs_lb = Label(root, text="选择处理 KubeJS 的文件夹", font=10) +json_lb = Label(root, text="选择回填需要的json", font=10) +kubeJSButton = Button(root, text="选择", command=browseKubeJS) +jsonButton = Button(root, text="选择", command=browseJson) +mode_lb = Label(root, text="工作模式", font=10) +mode_list = ["提取", "回填"] +mode_entry = Combobox(root, state="readonly", values=mode_list) +mode_entry.bind("<>", on_mode_select) +sv_ttk.use_light_theme() +sv_ttk_theme_lb = Label(root, text="工具窗口颜色设置", font=10) +sv_ttk_theme_list = ["亮色", "暗色"] +sv_ttk_theme_entry = Combobox(root, state="readonly", values=sv_ttk_theme_list) +sv_ttk_theme_entry.bind("<>", on_sv_ttk_theme_select) +saveButton = Button(root, text="生成", command=runFromGui) +gui() +root.update_idletasks() +x = (root.winfo_screenwidth() // 2) - (root.winfo_width() // 2) + 250 +y = (root.winfo_screenheight() // 2) - (root.winfo_height() // 2) +root.geometry('{}x{}+{}+{}'.format(700, 300, x, y)) + +root.mainloop()