import json import tkinter as tk from tkinter import messagebox, simpledialog
def collect_and_save_credentials(output_file: str = "user_credentials.json") -> bool: """弹窗依次收集公钥、私钥、API key,并保存到 JSON 文件。
Args:
output_file: 保存用户输入信息的文件路径。
Returns:
bool: 保存成功返回 True;用户取消或保存失败返回 False。
"""
root = tk.Tk()
root.withdraw()
try:
public_key = simpledialog.askstring("输入公钥", "请输入公钥:", parent=root)
if public_key is None:
messagebox.showwarning("已取消", "你已取消输入,未保存任何内容。", parent=root)
return False
private_key = simpledialog.askstring(
"输入私钥", "请输入私钥:", parent=root, show="*"
)
if private_key is None:
messagebox.showwarning("已取消", "你已取消输入,未保存任何内容。", parent=root)
return False
api_key = simpledialog.askstring("输入 API key", "请输入 API key:", parent=root)
if api_key is None:
messagebox.showwarning("已取消", "你已取消输入,未保存任何内容。", parent=root)
return False
payload = {
"public_key": public_key,
"private_key": private_key,
"api_key": api_key,
}
with open(output_file, "w", encoding="utf-8") as file:
json.dump(payload, file, ensure_ascii=False, indent=2)
messagebox.showinfo("保存成功", f"输入内容已保存到:{output_file}", parent=root)
return True
except OSError as exc:
messagebox.showerror("保存失败", f"写入文件失败:{exc}", parent=root)
return False
finally:
root.destroy()
if name == "main": # 执行案例:运行当前文件后弹出输入框,并将结果保存到当前目录。 save_ok = collect_and_save_credentials("demo_credentials.json") if save_ok: print("执行成功:已保存到 demo_credentials.json") else: print("执行结束:用户取消或保存失败。")