2016-01-27 17 views
0

我運行Ubuntu 14.1 kivy 1.9.0蟒蛇2.7Kivy ButtonBehavior沒有定義錯誤

我試圖寫一個小程序,它利用ButtonBehavior但它口口聲聲說的名字在應用程序啓動是沒有定義。我有另一個使用ButtonBehavior的程序,它啓動得很好。其實我直接從文件複製該導入工作,我仍然得到相同的錯誤。 我試圖卸載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 


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() 

回答

0

MainLayout類,您使用功能的self.之外。更仔細地閱讀錯誤。

+0

我刪除了「自我」,我仍然收到錯誤。 – mri3

+0

@ mri3您尚未導入Image類和一些其他類/模塊。 – jligeza