我使用Tkinter条目小部件允许用户向GUI输入文本。输入小部件有默认文本,我想用一个按钮来清除它。我有以下代码:
from Tkinter import *
def delete_entries(fields):
for field in fields:
field.delete(0,END)
def UserInput(status,name):
optionFrame = Frame(root)
optionLabel = Label(optionFrame)
optionLabel["text"] = name
optionLabel.pack(side=LEFT)
var = StringVar(root)
var.set(status)
w = Entry(optionFrame, textvariable= var)
w.pack(side = LEFT)
optionFrame.pack()
if __name__ == '__main__':
root = Tk()
fields = 'ExperimentNumber', 'OutputFileName', 'npts1', 'block1'
ExperimentNumber = UserInput("1", "Experiment number")
OutputFileName = UserInput("output.txt", "Output file name")
npts1 = UserInput("1000", "Number of points")
block1 = UserInput("8", "Block size")
Delete_button = Button(root, text = 'Clear all', command = delete_entries(fields))
Delete_button.pack()
我试着用要删除的变量列表(如上所述)创建fields
,并在函数delete_entries()
中迭代,但是这会返回一个错误,因为字段中的条目是字符串。例如,我已经尝试用fields = ExperimentNumber
替换字段,但是这会返回一个错误,因为还没有定义ExperimentNumber。最后,我尝试将ExperimentNumber
放入delete函数中,即
def delete_entries():
ExperimentNumber.delete(0,End)
但这不起作用,因为ExperimentNumber
具有属性NoneType
(我不明白为什么会这样,因为delete_entries()
函数直到通过函数UserInput
创建ExperimentNumber
条目小部件之后才被调用)。如何删除条目小部件中的所有文本?我在我的实际代码中有大约20个这样的字段,希望用户能够通过一个按钮清除所有字段。
你在正确的轨道上,但你错过了两件小事。我在你的代码中添加了这两个,并试图用注释来解释。
相关问题 更多 >
编程相关推荐