Python Kivy ButtonBehavior未定义错误

Python Kivy ButtonBehavior未定义错误,python,python-2.7,kivy,Python,Python 2.7,Kivy,我正在用Kivy1.9.0Python2.7运行Ubuntu14.1 我试图编写一个利用ButtonBehavior的小程序,但它一直说在应用程序启动期间没有定义名称。我有另一个使用ButtonHavior的程序,它启动得很好。实际上,我直接从有效的文件中复制了导入,但仍然会得到相同的错误。 我尝试卸载kivy并重新安装,但没有成功。拼写和一切只是出于某种原因,它不会加载此应用程序 以下是回溯: [INFO ] [Kivy ] v1.9.0 [INFO ] [Python

我正在用Kivy1.9.0Python2.7运行Ubuntu14.1

我试图编写一个利用ButtonBehavior的小程序,但它一直说在应用程序启动期间没有定义名称。我有另一个使用ButtonHavior的程序,它启动得很好。实际上,我直接从有效的文件中复制了导入,但仍然会得到相同的错误。 我尝试卸载kivy并重新安装,但没有成功。拼写和一切只是出于某种原因,它不会加载此应用程序

以下是回溯:

[INFO   ] [Kivy        ] v1.9.0
[INFO   ] [Python      ] v2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2]
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_gif, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO   ] [Factory     ] 173 symbols loaded
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [OSC         ] using <multiprocessing> for socket
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO   ] [GL          ] OpenGL version <3.0 Mesa 10.1.3>
[INFO   ] [GL          ] OpenGL vendor <Intel Open Source Technology Center>
[INFO   ] [GL          ] OpenGL renderer <Mesa DRI Intel(R) Broadwell >
[INFO   ] [GL          ] OpenGL parsed version: 3, 0
[INFO   ] [GL          ] Shading version <1.30>
[INFO   ] [GL          ] Texture max size <8192>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
 Traceback (most recent call last):
   File "uf.py", line 27, in <module>
     class TestIcon(ButtonBehavior, Image):
 NameError: name 'ButtonBehavior' is not defined

在类
MainLayout
中,在函数外部使用
self.
。请仔细阅读错误。

我删除了“self”,但仍然得到了错误。@mri3您尚未导入Image类和其他一些类/模块。
import kivy
import subprocess

from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.scrollview import ScrollView
from kivy.clock import Clock
import  ufhubtest as uf
import time

PORT_NUM = 3
POWER_OFF_SECS = 3
POWER_ON__SECS = 3

class ListViewLabel(Label):
    pass

class PassFail(Label):
    pass

class TestIcon(ButtonBehavior, Image):
    pass

class MainLayout(BoxLayout):
    self.pf = ObjectProperty()
    self.ti = ObjectProperty()

    self.passcount = 0
    self.failcount = 0
    self.hubdev = None

    def find_hub(self):
        self.hubdev = usb.core.find(idVendor=0x0424, idProduct=0x2640)

        if self.hubdev is None:
            self.pf.text= "No Hub found for port power control"
            time.sleep = 2
            sys.exit(1)
        else:
            Clock.schedule_once(self.run_test)

    def run_test(self):

        #Clock.unschedule(self.run_test)

        while True:
            try:
                uf.port_power1(hubdev, PORT_NUM, False)
                time.sleep(POWER_OFF_SECS)
                uf.port_power1(hubdev, PORT_NUM, True)
                time.sleep(POWER_ON__SECS)
                dhub = usb.core.find(idVendor=DUT_VID, idProduct=DUT_PID)
                if dhub is not None:
                    passcount = passcount + 1
                    print "%s: Pass:%d Fail:%d" % (datetime.now().strftime('%Y-%m-%d %H:%M:%S'), passcount, failcount)
                else:
                    failcount = failcount + 1
                    print "%s: Pass:%d Fail:%d -- Hub not found" % (datetime.now().strftime('%Y-%m-%d %H:%M:%S'), passcount, failcount)

            except (KeyboardInterrupt, SystemExit):
                print "Interrupted"
                break

class UfApp(App):
        pass

if __name__=="__main__":
    UfApp().run()