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