如何将凯撒编码器脚本嵌入CustomTkinter窗口?
凯撒编码器整合CustomTkinter窗口实现方案
1. 重构编码逻辑为可调用函数
先把原来的命令行编码逻辑改成函数,方便GUI直接调用,同时加入错误处理:
def caesar_encrypt(offset_str, text): try: offset = int(offset_str) encrypted_text = "" for char in text: encrypted_text += chr(ord(char) + offset) return encrypted_text except ValueError: return "⚠️ 偏移量必须输入整数!"
2. 构建完整GUI界面
在你已有的窗口代码基础上,添加输入控件、结果展示控件和加密按钮,用grid布局让界面更规整:
3. 绑定按钮加密逻辑
添加按钮点击触发函数,负责获取输入、调用加密函数并展示结果:
完整整合代码
把所有部分合并就是最终可用的代码:
import customtkinter customtkinter.set_appearance_mode("dark") customtkinter.set_default_color_theme("blue") def caesar_encrypt(offset_str, text): try: offset = int(offset_str) encrypted_text = "" for char in text: encrypted_text += chr(ord(char) + offset) return encrypted_text except ValueError: return "⚠️ 偏移量必须输入整数!" def on_encrypt(): offset = offset_entry.get() raw_text = input_text.get("1.0", "end-1c") result = caesar_encrypt(offset, raw_text) output_text.delete("1.0", "end") output_text.insert("1.0", result) app = customtkinter.CTk() app.geometry("780x400") app.title("凯撒编码器") # 偏移量输入区域 offset_label = customtkinter.CTkLabel(app, text="偏移量:") offset_label.grid(row=0, column=0, padx=20, pady=(20, 5), sticky="w") offset_entry = customtkinter.CTkEntry(app, width=150) offset_entry.grid(row=0, column=1, padx=10, pady=(20, 5), sticky="w") # 待加密文本输入区域 input_label = customtkinter.CTkLabel(app, text="待加密文本:") input_label.grid(row=1, column=0, padx=20, pady=(10, 5), sticky="nw") input_text = customtkinter.CTkTextbox(app, width=600, height=120) input_text.grid(row=2, column=0, columnspan=2, padx=20, pady=(0, 10), sticky="nsew") # 加密结果展示区域 output_label = customtkinter.CTkLabel(app, text="加密结果:") output_label.grid(row=3, column=0, padx=20, pady=(10, 5), sticky="nw") output_text = customtkinter.CTkTextbox(app, width=600, height=120) output_text.grid(row=4, column=0, columnspan=2, padx=20, pady=(0, 10), sticky="nsew") # 加密按钮 encrypt_btn = customtkinter.CTkButton(app, text="开始加密", command=on_encrypt) encrypt_btn.grid(row=5, column=0, columnspan=2, pady=10) # 自适应布局配置 app.grid_rowconfigure(2, weight=1) app.grid_rowconfigure(4, weight=1) app.grid_columnconfigure(1, weight=1) app.mainloop()
说明
- 用
CTkTextbox处理多行文本输入输出,比单行输入框更实用 - 加入错误处理,偏移量输入非整数时会给出提示
- 配置网格权重,窗口缩放时控件会自动调整大小
内容的提问来源于stack exchange,提问作者Planky
相关产品推荐
相关产品推荐

