亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在字典中存儲 tkinter 按鈕小部件?

如何在字典中存儲 tkinter 按鈕小部件?

UYOU 2021-08-14 21:16:12
我的程序的兩個目標: #1 單擊按鈕后將筆記復制到剪貼板;和 #2 通過重新啟動程序使按鈕小部件保持不變。(這篇文章將只關注第 1 個目標)按鈕按預期填充,但命令無法正常工作(盡管沒有錯誤)。我嘗試過其他剪貼板模塊,例如 pyperclip,但沒有成功。抱歉,如果這很難理解,我上周才開始學習 Python 作為我的第一門編程語言。我想知道如何讓按鈕將其相應的注釋復制到剪貼板。from tkinter import *import jsonroot = 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)
查看完整描述

1 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

您不需要使用 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()


查看完整回答
反對 回復 2021-08-14
  • 1 回答
  • 0 關注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號