Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AttributeError:事件实例没有属性';删除';_Python_Tkinter_Attributes - Fatal编程技术网

Python AttributeError:事件实例没有属性';删除';

Python AttributeError:事件实例没有属性';删除';,python,tkinter,attributes,Python,Tkinter,Attributes,我正在尝试制作一个程序,该程序将返回用户的输入,并在按下return/Enter时清除条目。运行时,第二个方法(def e_delete(e):)总是给出错误,AttributeError:Event实例没有属性“delete”,如果e更改为self则不会返回任何字符串,也不会发生错误 from Tkinter import * import os.path import PIL.Image, PIL.ImageTk import Tkinter as tk def on_change(e):

我正在尝试制作一个程序,该程序将返回用户的输入,并在按下return/Enter时清除
条目。运行时,第二个方法(
def e_delete(e):
)总是给出错误,
AttributeError:Event实例没有属性“delete”
,如果
e
更改为
self
则不会返回任何字符串,也不会发生错误

from Tkinter import *
import os.path
import PIL.Image, PIL.ImageTk
import Tkinter as tk

def on_change(e):
    inp = e.widget.get()
    print inp

root = tk.Tk()

#Makes a canvas for objects
canvas = Canvas(root, height=100, width=400)
#Displays the canvas
canvas.grid(row=3, column=2)

root.grid_columnconfigure(0, weight=1)
root.grid_columnconfigure(1, weight=1)

label = Label(root, text="Enter an element or the atomic number from 1 to 118.").grid(row=0, column=2)

e = tk.Entry(root)
e.pack()
e.bind("<Return>", on_change)
e.grid(row=2, column=2)
e.focus()

def e_delete(e):
    e.delete(0, 'end')

e.bind("<Return>", e_delete)

#img = create_image(0, 300, 'ptable.png')

root.mainloop()
从Tkinter导入*
导入操作系统路径
导入PIL.Image,PIL.ImageTk
将Tkinter作为tk导入
更改时的def(e):
inp=e.widget.get()
打印输入
root=tk.tk()
#为对象制作画布
画布=画布(根,高度=100,宽度=400)
#显示画布
canvas.grid(行=3,列=2)
root.grid\u columnconfigure(0,权重=1)
root.grid\u columnconfigure(1,权重=1)
label=label(root,text=“输入元素或1到118之间的原子序数”)。网格(行=0,列=2)
e=传统条目(根)
e、 包()
e、 绑定(“,在更改时)
e、 网格(行=2,列=2)
e、 焦点()
定义e_删除(e):
e、 删除(0,“结束”)
e、 绑定(“,e_delete)
#img=create_image(0,300,'ptable.png')
root.mainloop()
您正在这样做:

def entry_delete(e):
    e.delete(0, 'end')
而且他们没有
delete
方法

事实上,您还有一个同名的全局变量并没有任何区别(除了让您和其他读者感到困惑);参数
e
隐藏全局
e

因此,如果您想对
条目
对象调用一个方法,请不要隐藏它:

def e_delete(evt):
    e.delete(0, 'end')
或者,如果您想对触发事件的任何小部件调用一个方法(在本例中,它始终是同一件事,所以这只是哪个对您更有意义的问题),您可以这样做:

def e_delete(evt):
    evt.widget.delete(0, 'end')
然而,为了避免这种混淆,通常最好给每件事都起一个清晰的名字:

entry = tk.Entry(root)
ent.pack()
entry.bind("<Return>", on_change)
entry.grid(row=2, column=2)
entry.focus()0

def entry_delete(evt):
    entry.delete(0, 'end')

entry.bind("<Return>", entry_delete)
entry=tk.entry(根)
ent.pack()
entry.bind(“,在更改时)
entry.grid(行=2,列=2)
entry.focus()0
def条目_删除(evt):
条目。删除(0,“结束”)
entry.bind(“,entry\u delete)

我们能得到一段不会抛出2个错误和tkinter警告的代码吗?换句话说,一个实际的?还有,问题是什么?“返回用户输入”是什么意思?还它在哪里?非常感谢!现在是否可以从用户处获取结果并删除条目?