我正在尝试定义一个命令,该命令根据为命令提供的参数之一创建一个新变量。例如:
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)
到目前为止,我一直没有成功,因为它一直说位置变量的条目尚未定义(这是真的,因为这是我想要完成的)。有没有好办法完成这项工作?
答案 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()