gpt4 book ai didi

python - on_press(按钮)中的缩进级别太多

转载 作者:行者123 更新时间:2023-12-01 03:34:57 25 4
gpt4 key购买 nike

我需要将 if block 放入 on_press 事件中,但我的编译器不让这段代码消失。它说我的缩进级别太多。我错过了什么吗?我做得对吗?这是如何运作的?如果这是一个错误,我该如何避免它?我在 1.9.1 和 1.9.0 Kivy 上都会出现此错误。

ma​​in.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 之后使用一个操作。

最佳答案

那是因为它没有实现。至少不是以你认为的方式运作。它还表明您应该将逻辑直接移至 Python。代码块太多了,主要是kv这样的东西文件会变得困惑。对于 future 的代码来说,这似乎是一个好方法,否则您只需要 kv文件,这对于您对 .py 执行的分析、打印和其他古怪方法来说并不是最佳选择。编码时文件。

.kv文件主要用于布局设计和一些逻辑,用 python 编写会很烦人,例如带有部分、带有参数(取消)打包的方法等等。我认为该语言仍然需要一些工作,这可以被视为一个错误(如果该语言支持此类 block ),但即使没有整个 if-else ,您也可以很好地使用它。堵塞。

例如像这样:

Button:
text: 'a'
on_press:
if self.text == 'a': print 'It is A!'; print 'Sure it is!'
else: print 'No.'

好老的;来救援,你可以自由地在那里放置你想要的行数。

关于python - on_press(按钮)中的缩进级别太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40470992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com