python - 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
我正在学习教程,我已经完成了我看过的同样的事情,并且工作正常。
有人可以帮我吗?
解决方案
推荐阅读
- security - 保护客户端 Chrome 扩展代码的方法
- java - 如何在 Java 11 中检查MemberAccess(SomeClass.class, Member.DECLARED)
- php - 用于 Twitter 推文的 PHP 中带有 preg_replace 的 JSON 解码数组
- python - 正确排序字符串列表的问题
- regex - 正则表达式:排除主要搜索词在中间的短语
- jdbc - java.lang.ClassNotFoundException: jdbc:mysql 异常
- cassandra - 压缩导致内存不足错误并关闭 Cassandra 进程
- javascript - 柴东西使以前的测试失败?
- python - IBM Cloud:ResourceControllerV2.list_resource_instances() 的空结果
- node.js - Nodejs child_process 的 exec 或 spwan 没有返回干净的输出