[英]Updating values in a list from a Tkinter entry box - Python
我試圖從輸入到TKinter中創建的輸入框中的值更新列表中的值。 在我的示例中,用戶在列表中輸入人員的真實姓名。 它們的真實名稱將替換example_list中的“x”。
我在方法中將變量指定為全局變量,但更改僅適用於列表中迭代的第二個值 - 第一個值是下面代碼中的初始化值 - 99。
我還嘗試指定一個單獨更新i [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)
感謝Wayne Werner指導我走向tksimpledialog,問題的解決方案就在這里。
from Tkinter import *
import tkSimpleDialog
example_list = [['Jimmy Bob','x','78'],[" Bobby Jim",'x','45'] ,["Sammy Jim Bob",'x','67'] ]
root = Tk()
root.geometry("400x400")
Label(root, text = "Enter the names in the dialog").grid(row=0, column=0)
for i in example_list:
root.lower()
i[1] = tkSimpleDialog.askstring('Enter their real name', 'What is %s real name' %i[0])
print(i[1])
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.