在python

时间:2015-05-28 21:27:33

标签: python

我正在尝试定义一个命令,该命令根据为命令提供的参数之一创建一个新变量。例如:

def NewEntry(Variable,Variable_Entry,Column,Row):
    Variable = StringVar()
    Variable_Entry = ttk.Entry(mainframe, width = 15, textvariable = Variable)
    Variable_Entry.grid(column = Column, row= Row)

到目前为止,我一直没有成功,因为它一直说位置变量的条目尚未定义(这是真的,因为这是我想要完成的)。有没有好办法完成这项工作?

2 个答案:

答案 0 :(得分:1)

要创建一个全局变量,请执行此操作(尽管非常难看并且不太好):

def newEntry(Variable): # Variable should be a string
    globals()[Variable] = StringVar()

但是,你不应该这样做。之后你不会知道变量!

如果要存储GUI元素或多个未知项,请使用内置数据类型,例如列表和词典。它们更容易使用,并被广泛接受。

答案 1 :(得分:0)

您不能通过将变量作为参数传递来设置变量。它不起作用,因为它没有任何意义。你想要的更像是这样:

def NewEntry(column, row):
    variable = StringVar()
    variable_entry = ttk.Entry(mainframe, width=15, textvariable=variable)
    variable_entry.grid(column=column, row=row)
    return variable, variable_entry

然后,当您调用此函数时,将其返回值保存为您喜欢的任何变量名称:

var, var_entry = NewEntry()