【问题标题】:TypeError: edit_undo() takes 1 positional argument but 2 were given类型错误:edit_undo() 采用 1 个位置参数,但给出了 2 个
【发布时间】:2021-01-08 15:16:08
【问题描述】:

这是我编辑的代码:

from tkinter import *

class UI:
   def __init__(self):
      self.root = Tk()
      self.text= Text(self.root)
      self.text.pack()
      self.text.bind("<Return>", self.entry.edit_undo)
      self.text.mainloop()

UI()

当我运行它时它会正常运行,但是当diff.node_root.bind() 被触发时,它会显示一个错误,上面写着TypeError: edit_undo() takes 1 positional argument but 2 were given。有人可以帮帮我吗?

【问题讨论】:

  • diff 代表类的实例,如self,但我使用不同的名称:)
  • 这样更好。现在你能告诉我edit_undo是什么吗?
  • edit_undo 是 Text 小部件类 here's the information about it 中的内置方法
  • 但我仍然没有得到任何东西:(
  • 请看下面我的回答,但也请阅读minimal reproducible example。您的代码仍然无法重现。你使用self.entry,但从不定义它

标签: python python-3.x tkinter tkinter-text


【解决方案1】:

您传递给bind(事件处理程序)are expected to take one event argument 的函数。 edit_undo 不接受任何参数self 除外……)。

如果您对实际的event 不感兴趣,您可以传递一个忽略它的函数,例如:

self.text.bind("<Return>", lambda e: self.entry.edit_undo())

【讨论】:

  • 是的,我已经修复了它,但它仍然显示错误_tkinter.TclError: nothing to undo
  • 好吧,我帮不上忙,因为这取决于您的文本小部件的状态。您必须确保这仅在需要撤消时才真正起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 2022-08-03
相关资源
最近更新 更多