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

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

Tkinter:將功能分配給按鈕時出現KeyError

Tkinter:將功能分配給按鈕時出現KeyError

阿波羅的戰車 2022-11-09 16:54:28
所以,我有一個相當復雜的程序,我遇到了一個我似乎無法解決的問題。這是我的程序有問題的部分:import tkinter as tkwindow = tk.Tk()variable = "enter"vars()[variable] = tk.Entry()vars()[variable].insert(0, "hello")vars()[variable].pack()def hi():    text = vars()[variable].get()button = tk.Button(text = "Click", command = hi)button.pack()我需要按下一個按鈕來獲取名為“enter”的條目的內容。由于我的程序是如何工作的,這個名字“enter”必須存儲在一個變量中,我在這里稱之為“variable”。會發生什么,當我按下按鈕時,我得到一個 KeyError。更奇怪的是,當我執行以下操作時,程序實際上可以工作:import tkinter as tkwindow = tk.Tk()variable = "enter"vars()[variable] = tk.Entry()vars()[variable].insert(0, "hello")vars()[variable].pack()text = vars()[variable].get()button = tk.Button(text = "Click")button.pack()這里獲取“enter”的內容不是通過按鈕完成的,而是在程序運行時自動完成的。這不是我想要的,但由于某種原因它有效。我該怎么做才能使第一個代碼正常工作?
查看完整描述

2 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

當您vars在函數中本地執行時hi,會創建一個新的 dict 對象,這與全局創建的 dict 對象不同。您可以保存對變量的引用并在函數中

使用該變量。hi


import tkinter as tk


window = tk.Tk()

variable = "enter"

vars()[variable] = tk.Entry()

vars()[variable].insert(0, "hello")

vars()[variable].pack()


d = vars()


def hi():

    text = d[variable].get()


button = tk.Button(text="Click", command=hi)

button.pack()


window.mainloop()


查看完整回答
反對 回復 2022-11-09
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

我需要按下一個按鈕來獲取名為“enter”的條目的內容。由于我的程序是如何工作的,這個名字,“enter”必須存儲在一個變量中,


比使用更好的解決方案vars()[variable]是將小部件存儲在字典中。的使用以vars()使代碼更難理解為代價提供的價值很小。


import tkinter as tk


window = tk.Tk()

variable = "enter"


widgets = {}

widgets[variable] = tk.Entry()

widgets[variable].insert(0, "hello")

widgets[variable].pack()


def hi():

    text = widgets[variable].get()

    print(text)


button = tk.Button(text = "Click", command = hi)

button.pack()


查看完整回答
反對 回復 2022-11-09
  • 2 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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