我想從輸入到TKinter中創建的輸入框中的值中更新列表中的值。在我的例子中,用戶在列表中輸入人物的真實姓名。他們的真名將取代example_list中的'x'。從Tkinter輸入框更新列表中的值 - Python
我已經在方法中指定了全局變量,但更改僅適用於列表中迭代的第二個值 - 第一個是初始化值 - 下面代碼中的值爲99。
我也嘗試過指定一個單獨更新我[1]的lambda函數,但是這不起作用 - 錯誤的語法。除了quit()函數似乎是繼續迭代的唯一方法。
有沒有辦法乾淨地做到這一點,並與清單中的第一項更新?
from Tkinter import *
example_list = [['Jimmy Bob','x','78'],[" Bobby Jim",'x','45'] ,["Sammy Jim Bob",'x','67'] ] #Nickname/Real Name/Age
newValue = 99
def replace():
global newValue
newValue = e1.get()
print("Their real name is %s" %(e1.get()))
#return(newValue)
win.quit()
root = Tk()
for i in example_list:
win = Toplevel(root)
#win.lift()
e1 = Entry(win)
e1.grid(row=1, column=0)
var = StringVar()
var.set(i[0])
Label(win, textvariable = var).grid(row=0, column=0)
Button(win, text='Enter Real Name', command=replace).grid(row=2, column=0, pady=4)
#Button(win, text='Enter Real Name', command=lambda: i[1] =replace()).grid(row=2, column=0, pady=4)
i[1] = newValue
win.mainloop()
root.mainloop()
for i in example_list:
print(i)
你想在這裏做什麼?你正在創建一個新的頂層窗口然後退出它?爲什麼?如果你只是想從用戶那裏獲得輸入,爲什麼不直接使用tksimpledialog呢? –
@WayneWerner謝謝。太老實,我不知道這是一個選擇。花了幾個小時尋找tkinter和頂級的孩子窗戶,我只能找到。您的解決方案解決了我遇到的所有問題。 – alkey