【问题标题】:Need help with Classes in Python在 Python 中的类方面需要帮助
【发布时间】:2011-02-24 02:04:54
【问题描述】:

我正在制作一个程序来导入一个自定义小部件,它是一个类(它继承自 Tkinter Frame 小部件)。在我开始绑定之前,这一切都很好。为了减少混淆,我们将调用主应用程序应用程序,它从 lib 中导入小部件的模块,并且正在导入到应用程序中的小部件将被称为 cwid。

基本上我需要以某种方式在应用程序中引用一个函数,以便它可以绑定到我在 lib 中的小部件。

我试图将 cwid 中的小部件绑定到的函数是 element_click(函数 element_click 在应用程序中。):

lambda event: element_click(event, elementinfo[3])

所以绑定在 lib 中看起来像这样(元素是 cwid 中的画布小部件)

element.bind('<ButtonRelease-1>', lambda event: element_click(event, elementinfo[3]))

上面的行不起作用,但是看到 element_click 在应用程序中。所以我尝试了一个似乎不起作用的解决方法。

import app

loc = app.EOG

element.bind('<ButtonRelease-1>', lambda event: loc.element_click( event, elementinfo[3]))

当我尝试上述方法时,我收到以下错误:

TypeError: unbound method element_click() must be called with EOG instance as first argument (got Event instance instead)

EOG 是应用程序中的一个类,其中包含 element_click。

此外,以上所有代码位都是sn-ps。

编辑:

尝试了loc = app.EOG(),出现如下错误:

AttributeError: EOG instance has no attribute '__nonzero__'

【问题讨论】:

    标签: python class module import tkinter


    【解决方案1】:

    我想你只是想要:

    loc = app.EOG()
    

    那么,loc 是 EOG 的一个实例,而loc.element_click 是一个绑定方法,所以它按预期工作。

    【讨论】:

    • 谢谢,还是有点麻烦。见编辑:
    • 在哪一行?我认为您需要更多上下文。作为背景,__nonzero__ 是一种用于将对象转换为布尔值的特殊方法。
    • 对不起,在我的代码中发现了错误。无论如何感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 2014-02-06
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多