eval()不接受关键字参数



代码:

import tkinter as tk
win = tk.Tk()
text = tk.Text(win, width = 50, height = 20, bg = 'black', fg = 'lightgreen', wrap = tk.WORD)
text.pack()
text.tag_configure('prompt', foreground = 'magenta')
text.tag_configure('output', foreground = 'yellow')
text.insert('end', '>>> ', 'prompt')
def on_return(*args):
cmd = text.get('prompt.last', 'end')
if cmd:
try:
output = str(eval(cmd, globals = {"__builtins__":None}))
except Exception as e:
output = str(e)
text.insert('end', 'n' + output, 'output')
text.insert('end', 'n>>> ' + output, 'prompt')
return 'break'
text.bind('<Return>', on_return)
win.mainloop()

为了得到这个输出:eval((不接受关键字参数,只需在文本小部件上键入任何内容,然后按enter键。

我应该怎么做才能避免这种输出?

在代码中,您需要从字典中传递的参数中删除"globals="。正确的行是:

output = str(eval(cmd, {"__builtins__":None}))

相关内容

  • 没有找到相关文章