eval() 没有关键字参数

eval() takes no keyword argument

代码:

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() 不带关键字参数,只需在文本小部件上键入任何内容并按回车键。

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

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

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