-
Notifications
You must be signed in to change notification settings - Fork 3
/
ui.py
103 lines (77 loc) · 2.47 KB
/
ui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
"""界面与逻辑"""
import tkinter.messagebox as msgbox
from tkinter.filedialog import askdirectory
from tkinter import Button, Entry, Label, Menu, StringVar, Tk
from typing import Callable, NoReturn
import config
import functions
ROOT = Tk()
_PATH = StringVar() # 路径动态存储
_RESIZEABLE_X = False # 在水平方向是否可以拉伸
_RESIZEABLE_Y = False # 在垂直方向是否可以拉伸
# 定义回调函数
def _load_help() -> NoReturn:
"""打开帮助文件"""
functions.notepad(config.HELP)
def _exit() -> NoReturn:
"""退出程序 - 销毁窗口"""
ROOT.destroy()
def _select() -> NoReturn:
"""询问选择文件夹地址"""
_PATH.set(askdirectory())
def success(console: bool) -> NoReturn:
"""输出成功消息"""
# 判断是否为命令行模式
if console:
print(config.SUCCESS_MSG)
return
# GUI 模式
msgbox.showinfo(
title=config.SUCCESS_TITLE,
message=config.SUCCESS_MSG
)
def failed(console: bool) -> NoReturn:
"""输出失败消息"""
# 判断是否为命令行模式
if console:
print(config.FAILED_MSG)
return
# GUI 模式
msgbox.showerror(
title=config.FAILED_TITLE,
message=config.FAILED_MSG
)
def need(console: bool) -> NoReturn:
"""输出重选文件消息"""
# 判断是否为命令行模式
if console:
print(config.INFO_MSG)
return
# GUI 模式
msgbox.showinfo(
title=config.INFO_TITLE,
message=config.INFO_MSG
)
def init(function: Callable) -> NoReturn:
"""界面初始化函数"""
# 选择文件函数包装
def run():
return function(_PATH.get())
# 顶部菜单栏
_menubar = Menu(ROOT)
_menubar.add_command(label="选择文件夹", command=_select)
_menubar.add_command(label="帮助", command=_load_help)
_menubar.add_command(label="退出", command=_exit)
# 路径标签
_label = Label(ROOT, text="选择路径 : ")
_label.grid(row=0, column=0)
# 路径输入框
_choose_entry = Entry(ROOT, textvariable=_PATH)
_choose_entry.grid(row=0, column=1)
# 选择与执行按钮
_run_btn = Button(ROOT, text="开始运行", command=run)
_run_btn.grid(row=0, column=2)
# 配置界面
ROOT.resizable(_RESIZEABLE_X, _RESIZEABLE_Y)
ROOT.config(menu=_menubar)
ROOT.title(config.TITLE)