首页 > 解决方案 > NameError:名称“按钮”未定义

问题描述

我正在编写一个简单的 kivy 程序,我想在其中使用 BoxLayouts。我使用了一个 kv 文件,包括:


BoxLayoutExample:
<MainWidget>:
    Button :
        text : "Hello"
        size : "200dp" , "100dp"
        pos : "100dp" , "200dp"
        color : 1 , 0.5 , 0.2 , 1
    Label :
        text : "Hello"
        size : "200dp" , "100dp"
        pos : "200dp" , "300dp"
        color : 0,1,0,1

主要代码是:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.widget import Widget

class BoxLayoutExample(BoxLayout):
    def __init__(self , **kwargs):
        super().__init__(**kwargs)
        b1 = Button(text = "a")
        b2 = Button(text = "b")
        self.add_widget(b1)
        self.add_widget(b2)

class MainWidget(Widget):
    pass

class TheLabApp(App):
    pass

TheLabApp().run()


当我运行它时,我收到此错误:

 Traceback (most recent call last):
   File "/Files/Programming/Python/Project/Kivy/test.py", line 19, in <module>
     TheLabApp().run()
   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/kivy/app.py", line 949, in run
     self._run_prepare()
   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/kivy/app.py", line 918, in _run_prepare
     self.load_kv(filename=self.kv_file)
   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/kivy/app.py", line 691, in load_kv
     root = Builder.load_file(rfilename)
   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/kivy/lang/builder.py", line 306, in load_file
     return self.load_string(data, **kwargs)
   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/kivy/lang/builder.py", line 404, in load_string
     widget = Factory.get(parser.root.name)(__no_builder=True)
   File "/Files/Programming/Python/Project/Kivy/test.py", line 8, in __init__
     b1 = Button(text = "a")
 NameError: name 'Button' is not defined

我正在学习教程,我已经完成了我看过的同样的事情,并且工作正常。

有人可以帮我吗?

标签: pythonkivy

解决方案


推荐阅读