我正在使用此代码来计算gcode文件中的某些值。在按钮gcode文件加载中找到一个卷值,然后找到质量和价格。我希望一个人能够使用输入函数输入这些变量,但是首先还有一些默认值。我的问题是,输入窗口不会清除并接受其他值,只有默认值存在。我正在使用entry.delete(0,END),但它无法正常工作。
这是代码:
def delete_entry(self):
e.delete(0, END)
return None
# def Statusbar(self):
# self.stat1.set("Waiting for the file... ")
#Creation of init_window
def init_window(self):
# changing the title of our master widget
self.master.title("Filament Data")
# allowing the widget to take the full space of the root window
self.pack(fill=BOTH, expand=1)
# creating a menu instance
menu = Menu(self.master)
self.master.config(menu=menu)
# create the file object)
file = Menu(menu)
help = Menu(menu)
# adds a command to the menu option, calling it exit, and the command it runs on event is client_exit
file.add_command(label="Exit", command=self.client_exit)
help.add_command(label="About", command=self.about_popup)
#added "file" to our menu
menu.add_cascade(label="File", menu=file)
menu.add_cascade(label="Help", menu=help)
#Creating the intro label
l_instruction = Label(self, justify=CENTER, compound=TOP, text="Enter density and price per \n gram of your material and then \n load GCODE file to find volume, \n weight and price of used filament.")
l_instruction.grid(columnspan=2, ipady=10)
#Creating the button
gcodeButton = Button(self, text="Load GCODE", command=self.read_gcode)
gcodeButton.grid(row=3, columnspan=2, ipady=10)
#Entry fields for density and price per gram
e = Entry(self, justify=CENTER, width=5)
# e.delete(0, END)
e.insert(0, "1.13")
e.grid(row=1, column=0)
e.bind("<Button-1>", self.delete_entry)
self.density = float(e.get())
e_label = Label(self, text="D")
e_label.grid(row=2, column=0)
e1 = Entry(self, justify=CENTER, width=5)
# e1.delete(0, END)
e1.insert(0, "0.175")
e1.grid(row=1, column=1)
self.price = float(e1.get())
e1_label = Label(self, text="$")
e1_label.grid(row=2, column=1)
答案 0 :(得分:1)
当您调用delete
方法时,它会立即删除窗口小部件中的任何内容。在您的情况下,当您无需删除任何内容时,您将在创建窗口小部件后立即调用它。
如果您希望在用户点击它时删除条目小部件中的文本,则需要定义删除内容的绑定。
要创建绑定,请调用窗口小部件的bind
方法,并告诉它要绑定的事件和要调用的函数。例如,如果要调用函数delete_entry
,可以这样做:
def delete_entry(event):
event.widget.delete(0, "end")
e = Entry(...)
e.bind("<1>", delete_entry)
将函数绑定到事件时,将使用参数调用该函数 - 该参数表示事件。对象的一个属性是widget
,它是对拥有该事件的小部件的引用。您可以使用此引用与窗口小部件进行交互。