gpt4 book ai didi

python - 如何在字典中存储 tkinter 按钮小部件?

转载 作者:行者123 更新时间:2023-12-01 01:26:59 28 4
gpt4 key购买 nike

我的程序的两个目标:#1 单击按钮后将注释复制到剪贴板; #2 使按钮小部件在程序重新启动后仍然存在。 (这篇文章将仅关注目标 1)按钮已按预期填充,但命令无法正常工作(尽管没有错误)。我尝试过其他剪贴板模块,例如 pyperclip,但没有成功。如果这很难理解,我很抱歉,我上周刚刚开始学习 Python 作为我的第一门编程语言。

我想知道如何让按钮将相应的注释复制到剪贴板。

from tkinter import *
import json

root = Tk()
root.title("CopyNotes")
root.geometry()

json_file = open("dictionary.json", encoding="utf-8")
mynotes = json.load(json_file)

for keys in mynotes:
btnz = Button(root, text=mynotes[keys][0], font="Helvetica 10 bold", bg="silver", command=root.clipboard_append(mynotes[keys][1]), height=2, width=13).pack(side=TOP, fill=BOTH, expand=YES)

root.mainloop()

所以需要明确的是,我试图解决的问题是按钮命令无法正常工作。第一次按下任何按钮时,它会复制“button1notebutton2notebutton3note”,然后完全停止工作。我想要第一个按钮达到的效果:root.clipboard_append(button1note)其余的依此类推..

在我弄清楚如何做到这一点之后,我计划接受用户输入,通过添加到字典来添加自己的按钮。编辑:修复了剪贴板问题 -

    mynotes = pickle.load(open("note.p", "rb"))
print(mynotes)
for keys in mynotes:
thenotes = mynotes[keys][1]
mybtnz = Button(ctowin, text=mynotes[keys][0], font="Helvetica 10 bold", bg="silver",
command=lambda thenotes=thenotes: pyperclip.copy(thenotes), height=2, width=13)\
.pack(side=TOP, fill=BOTH, expand=YES)

Button example

最佳答案

您不需要使用 json,因为您使用的不是 JSON 对象而是 Python 字典。

这是您重构后的代码,用 3 个按钮填充应用程序;

[更新]尽管您需要完全重构您的代码,因为您的 for 循环会立即用字典中的所有内容填充剪贴板。

from tkinter import *
from tinydb import TinyDB, Query

db = TinyDB('clipboard.json')

root = Tk()
root.title("CopyNotes")
root.geometry()

mynotes = {
"B1": ["button1label","button1note"],
"B2":["button2label","button2note"],
"B3":["button3label","button3note"]
}

def cp_to_cb_and_db(note, key):
root.clipboard_append(note[key][1])
print('[+] Adding note: {} to clipboard.'.format(note))
db.insert({key: note})


for key in mynotes:
btnz = Button(
root,
text=mynotes[key][0],
font="Helvetica 10 bold",
bg="silver",
command=cp_to_cb_and_db(mynotes, key),
height=2,
width=13).pack(side=TOP, fill=BOTH, expand=YES)

root.mainloop()

关于python - 如何在字典中存储 tkinter 按钮小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53251800/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com