2016-07-26 6 views
0

Я пишу GUI в Linux, используя Kivy и Python. Программа должна обнаружить USB-устройство и использовать устройство для программирования изображения для цели. Вот фрагмент моего кода:kivy .bind приводит к AssertionError: '' не является вызываемым

Это коды, которые я пытаюсь обнаружить USB-устройство. Это файл, назовем его A.py.

Когда я запускал программу, возникла ошибка утверждения при создании экземпляра 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). Сообщение об ошибке Файл "_event.pyx", kivy._event.EventDispatcher.bind (kivy/_event.c: 5536) AssertionError: '' не отозваны

Q1. Может ли кто-нибудь помочь, что означает утверждение?

Q2. Я заметил, что _usb_bus и _usb_dev - пустая строка. Является ли это утверждение причиной того, что _usb_bus и _usb_dev являются пустым строковым свойством, следовательно, не подлежащим вызову?

ответ

0

Да, когда вы связываете, вы должны передать функцию, потому что привязка попытается вызвать ее позже.