You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter+SQLite密码管理程序:多账号密码复制问题及复选框实现需求

解决多账号密码复制的复选框实现方案

原代码的问题在于循环结束后decrypted_password仅保留最后一个账号的密码,导致复制按钮只能取到最后一个值。要实现复选框选择复制,需要把每个账号的信息和复选框关联起来,具体修改如下:

步骤1:重构检索结果的展示逻辑

不再用单个Label拼接所有文本,而是为每个账号创建独立的UI组件,同时存储每个账号的密码和对应的复选框状态变量。

修改后的完整代码

def find_detalis():
    entered_platform = platform_entry.get().lower()

    cursor.execute('SELECT * FROM MyUsers WHERE platform=?', (entered_platform,))
    users = cursor.fetchall()

    if users:
        info_box_window = tk.Toplevel(root)
        info_box_window.geometry("320x390+620+300")
        info_box_window.title("User found")

        # 存储每个账号的密码和对应的复选框变量
        account_list = []

        # 循环创建每个账号的展示组件
        for user in users:
            decrypted_username = decrypt_data(user[1], key)
            decrypted_password = decrypt_data(user[2], key)
            platform = user[3]

            # 创建账号容器Frame
            account_frame = tk.Frame(info_box_window)
            account_frame.pack(pady=5, padx=10, fill=tk.X)

            # 复选框变量,用于标记是否选中该账号
            var = tk.BooleanVar()
            checkbox = tk.Checkbutton(account_frame, variable=var)
            checkbox.pack(side=tk.LEFT, padx=5)

            # 账号信息标签
            info_label = tk.Label(account_frame, text=f"用户名: {decrypted_username}\n密码: {decrypted_password}\n平台: {platform}")
            info_label.pack(side=tk.LEFT, padx=5)

            # 将复选框变量和密码存入列表
            account_list.append( (var, decrypted_password) )

        # 复制密码函数:遍历列表找到选中的账号,复制其密码
        def copy_to_clipboard():
            for var, password in account_list:
                if var.get():
                    pyperclip.copy(password)
                    # 可选:复制后提示
                    tk.messagebox.showinfo("提示", "密码已复制到剪贴板")
                    return
            # 如果没有选中任何复选框
            tk.messagebox.showwarning("提示", "请先选择要复制的账号")

        copy_info_button = tk.Button(info_box_window, text="复制选中的密码到剪贴板", command=copy_to_clipboard)
        copy_info_button.pack(pady=10)

关键修改点说明

  • 用account_list存储每个账号的复选框状态变量和对应的密码,实现选中状态与密码的关联
  • 每个账号单独用Frame包裹复选框和信息标签,布局更清晰易读
  • 复制函数遍历account_list,找到被选中(var.get()为True)的账号并复制其密码
  • 增加未选中时的提示,优化用户操作体验

内容的提问来源于stack exchange,提问作者norsk.polakk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 10:50:33