【问题标题】:tkinter Toplevel objext is not callabletkinter Toplevel objext 不可调用
【发布时间】:2015-04-30 00:14:25
【问题描述】:

晚上好,我最近在使用 tkinter windows 时遇到了麻烦。我有一个程序,用户可以在其中从商店“购买”东西,将想要的产品添加到购物车后,一个按钮将他们带到订单的“最终”审查,他们可以在其中删除他们不想要的项目,问题是,我需要销毁那个窗口,显示信息窗口说“您不想要的商品已从购物车中删除”,然后再次运行“最终预览”(使用新数据,AKA 没有不受欢迎的项目)。问题是,销毁窗口后,出现错误提示:

TypeError: 'Toplevel' object is not callable

我的代码结构是这样的:

def reviewwindow(*previous window*,cartlist):
    previuswindow.destroy()
    reviewwindow=Toplevel(gui)
    reviewwindow.title("cart review")
    reviewwindow.geometry("450x450")
    #code about the stuff I need to do#
    botonb= Button(reviewwindow, text = "Delete items",command=lambda:       deleteitems(reviewwindow,*previous window*,cartlist,delete), width=7)
botonb.grid(row=8,column=1)

def deleteitems(reviewwindow,*previous window*,cartlist,delete):
   reviewwindow.destroy()
   deleteitems=Toplevel(gui)
   deleteitems.title("delete")
   deleteitems.geometry("300x300")

#code##code#
boton= Button(deleteitems, text = "go back",command=lambda:reviewwindow(*previous window*,new_cartlist), width=9)
boton.grid(row=2,column=1)

我不知道我是否把我的问题说得足够清楚,我需要更多的解释或者我很乐意提供更多的东西。

【问题讨论】:

  • *previous window* 是什么?它在您的实际代码中有正确的名称吗?
  • 是的,我在代码中有很多窗口,那个窗口有调用这个窗口的按钮,我只是为了在新窗口弹出时销毁它而导入窗口名称向上

标签: python windows tkinter toplevel


【解决方案1】:

问题是您有一个名为reviewwindow 的函数,但随后您将Toplevel(gui) 分配给reviewwindowdeleteitems 也是如此。当您调用这些函数时,程序会尝试调用 Toplevel 对象,而这些函数是不可调用的。为每个唯一值选择唯一名称。

【讨论】:

  • 哦,我明白了,我认为顶层是在另一个窗口中创建新窗口的唯一方法
  • 这与您如何创建新的顶级窗口无关,它与您如何命名它们有关。您定义了具有特定名称的函数,然后为它们的引用分配了全新的值。之后,它们将指向新对象而不是函数。当您尝试将这些对象视为函数(调用它们)时,它会失败。
猜你喜欢
  • 2014-07-02
  • 2020-02-07
  • 2015-06-08
  • 2020-08-13
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多