if
ブロックをon_press
イベントに入れる必要がありますが、私のコンパイラはこのコードを実行しません。それは私があまりにも多くのインデントレベルを持っていたと言います。私は何かが欠けている?私は正しいのですか?これはどのように作動しますか?それがバグだとすれば、どうすればそれを避けることができますか?このエラーは、1.9.1と1.9.0 Kivyの両方で表示されます。on_press(ボタン)のインデントレベルが多すぎます
main.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
Builder.load_string('''
#:set some_data 'text'
#:set Condition True
<MyClass>:
text: 'Some text'
on_press:
if Condition:
root.doSomething()
root.DoSomething(some_data)
''')
class MyClass(Button):
def DoSomething(*args):
pass #not actually doing anything
class MyApp(App):
def build(self):
return MyClass()
if __name__ == '__main__':
MyApp().run()
KV出力
Traceback (most recent call last):
File "file.py", line 15, in <module>
''')
File "C:\Python27\lib\site-packages\kivy\lang.py", line 1889, in load_string
parser = Parser(content=string, filename=fn)
File "C:\Python27\lib\site-packages\kivy\lang.py", line 1264, in __init__
self.parse(content)
File "C:\Python27\lib\site-packages\kivy\lang.py", line 1366, in parse
objects, remaining_lines = self.parse_level(0, lines)
File "C:\Python27\lib\site-packages\kivy\lang.py", line 1540, in parse_level
'Invalid indentation (too many levels)')
kivy.lang.ParserException: Parser: File "<inline>", line 8:
...
7: on_press:
8: if Condition:
>> 9: root.doSomething()
10: root.DoSomething(some_data)
...
Invalid indentation (too many levels)
私は右の同じ行にif
を配置する場合、これは動作します:
on_press: if Condition: DoSomething()
が、私はできるだけでこの方法でif
の後に1つのアクションを使用してください。