MCPcopy Create free account
hub / github.com/WavesMan/Disable-automatic-Windows-update / gui

Function gui

python/ui/main.py:29–155  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

27
28
29def gui():
30 # NOTE: 界面初始化前完成日志初始化与权限校验;日志路径用于导出功能
31 log_path = setup_logging()
32 log_event(logging.INFO, "ui_init", "GUI 初始化开始", action="gui_init", status="started")
33 if not is_admin():
34 log_event(logging.INFO, "ui_admin_required", "检测到非管理员权限,准备提权", action="gui_init", status="required")
35 messagebox.showinfo("提示", "需要管理员权限运行")
36 run_as_admin()
37
38 root = tk.Tk()
39 root.title("Windows 更新管理")
40 try:
41 icon_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "windows.ico")
42 root.iconbitmap(icon_path)
43 except Exception:
44 pass
45 root.geometry("550x550")
46 x, y = (root.winfo_screenwidth() - 550) // 2, (root.winfo_screenheight() - 550) // 2
47 root.geometry(f"550x550+{x}+{y}")
48 root.resizable(False, False)
49 root.minsize(550, 560)
50 root.maxsize(550, 560)
51 ttk.Style().theme_use("vista")
52
53 # NOTE: 单页简化界面:顶部操作区 + 两个功能区(更新、Defender)
54 topbar = ttk.Frame(root)
55 topbar.pack(fill=tk.X, padx=10, pady=10)
56 ttk.Button(topbar, text="检查更新", command=_check_update).pack(side=tk.RIGHT)
57 ttk.Button(topbar, text="导出日志", command=lambda: _export_logs(log_path)).pack(side=tk.RIGHT, padx=10)
58
59 content = ttk.Frame(root)
60 content.pack(fill=tk.BOTH, expand=True)
61
62 ttk.Label(content, text="暂停 Windows 更新", font=("Microsoft YaHei", 14)).pack(pady=10)
63 f1 = ttk.Frame(content)
64 f1.pack(pady=4)
65
66 selector = TimeRangeSelector(f1)
67 selector.pack(pady=6)
68
69 def _pause_with_selector():
70 action = "pause_updates_with_times"
71 op_id = new_op_id()
72 token = set_op_id(op_id)
73 started = time.perf_counter()
74 log_event(logging.INFO, "ui_action_started", "用户点击暂停更新", action=action, status="started")
75 try:
76 sdt, preset_days, edt, is_custom = selector.get_values()
77 except ValueError as e:
78 log_event(
79 logging.ERROR,
80 "ui_action_validation_failed",
81 f"暂停更新参数校验失败: {e}",
82 action=action,
83 status="failed",
84 error_type=type(e).__name__,
85 error_message=str(e),
86 )

Callers 1

main.pyFile · 0.85

Calls 8

setup_loggingFunction · 0.85
log_eventFunction · 0.85
is_adminFunction · 0.85
run_as_adminFunction · 0.85
_export_logsFunction · 0.85
TimeRangeSelectorClass · 0.85
create_btnFunction · 0.85
_run_simple_actionFunction · 0.85

Tested by

no test coverage detected