我已经在这个特定的墙上撞了好几天了。这里没有相关文章有效,所以我真的需要知道我哪里出错了。相关的代码部分是:
def print_scb(myscb):
print(myscb)
scb_string = ''
scb_list = [ 'Combat' , 'Communication' , 'Manipulation' , 'Mental' , 'Perception', 'Physical' ]
for s in scb_list:
zz = str(myscb[s])
scb_string = scb_string + s + " " + zz + "% "
return scb_string
内联KV部分是:
<CharacterSheet>:
BoxLayout:
orientation: 'vertical'
Label:
text:'Stats'
Label:
text: app.print_stats()
Label:
text:'Rolls'
Label:
text: app.print_rolls()
Label:
text:'SCM'
Label:
text: app.print_scm()
Label:
text:'SCB'
Label:
text: app.print_scb()
Button:
text:'Quit'
on_press: sys.exit()
Button:
text:'Back to Start'
on_press: root.manager.current = 'welcome'
&#34;&#34;&#34)
程序崩溃:
kivy.lang.BuilderException: Parser: File "<inline>", line 114:
...
112: text:'SCB'
113: Label:
>> 114: text: app.print_scb()
115: Button:
116: text:'Quit'
...
BuilderException: Parser: File "<inline>", line 114:
...
112: text:'SCB'
113: Label:
>> 114: text: app.print_scb()
115: Button:
116: text:'Quit'
...
AttributeError: 'NoneType' object has no attribute 'bind'
File "/usr/lib64/python3.4/site-packages/kivy/lang.py", line 1742, in create_handler
return eval(value, idmap), bound_list
File "<string>", line 114, in <module>
File "/usr/lib64/python3.4/site-packages/kivy/lang.py", line 935, in __getattribute__
object.__getattribute__(self, '_ensure_app')()
File "/usr/lib64/python3.4/site-packages/kivy/lang.py", line 930, in _ensure_app
app.bind(on_stop=lambda instance:
File "/usr/lib64/python3.4/site-packages/kivy/lang.py", line 2115, in _apply_rule
rctx['ids'])
File "/usr/lib64/python3.4/site-packages/kivy/lang.py", line 1747, in create_handler
cause=tb)
整个代码已发布到BrpGui.py
的dpasteprint_scb()函数返回一个字符串。
我出错的任何想法? 科林
答案 0 :(得分:0)
正如你在评论中提到的那样。
print_scb不是全局函数。它在CharacterSheet(Screen):class。中定义。
当你定义了你自己的功能时。
因此def print_scb(myscb):
而不是def print_scb(self, myscb):
同样在您的kv文件中,请勿使用app.print_scb()
,root.print_scb()
因为它属于那个类。
但是由于你的函数想要一个参数,它会抛出一个错误。所以你需要用参数调用它。像这样root.print_scb(some_variable)
来自文档https://kivy.org/docs/guide/lang.html -
Kv语言有三个特定关键字:
应用:始终引用您的应用实例 root:指当前规则中的基本小部件/模板
self:始终引用当前小部件