kivy .bind导致AssertionError:''不可调用

时间:2016-07-26 09:54:16

标签: python-2.7 kivy pyusb

我正在使用Kivy和Python在Linux中编写GUI。该程序应检测USB设备并使用该设备将图像编程到目标。以下是我的代码片段:

这些是我试图检测USB设备的代码。这是在一个文件上,我们称之为A.py。

    busses = usb.busses()

    for bus in busses:
        devices = bus.devices
        for dev in devices:
            if (dev.idVendor == vendor and dev.idProduct == product):
                    obj = ProgJTAG.ProgJTAG(bus.dirname,dev.filename, dev.idVendor, dev.idProduct, dev)

                    break

当我运行程序时,在创建ProgJTAG实例时出现断言错误。这在一个单独的文件ProgJTAG.py中定义如下:

  class ProgJTAG(BoxLayout):
    usb_bus = StringProperty('')
    usb_dev = StringProperty('')
    usb_vendor = StringProperty('')
    usb_product = StringProperty('')

    def __init__(self, _usb_bus, _usb_dev, _usb_vendor, _usb_product, dev):
          super(ProgJTAG, self).__init__()

          self.usb_bus = _usb_bus
          self.usb_dev = _usb_dev
          self.usb_vendor = str(_usb_vendor)
          self.usb_product = str(_usb_product)
          self.bind(usb_bus=self.usb_bus)
          self.bind(usb_dev=self.usb_bus)
          self.bind(usb_vendor=self.usb_bus)
          self.bind(usb_product=self.usb_bus)

错误发生在self.bind(usb_bus = self.usb_bus)行。错误消息是 File" _event.pyx",kivy._event.EventDispatcher.bind(kivy / _event.c:5536) 断言错误:''不可赎回

Q1。任何人都可以帮助断言的含义吗?

Q2。我注意到 _usb_bus _usb_dev 是空字符串。这个断言是由 _usb_bus _usb_dev 是空字符串属性导致的,因此无法调用吗?

1 个答案:

答案 0 :(得分:1)

是的,当你绑定时,你必须传递一个函数,因为绑定会在稍后尝试调用它。