繁体   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