簡體   English   中英

從Tkinter條目框更新列表中的值 - Python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM