gpt4 book ai didi

python - Kivy 外部规则固有

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:57 26 4
gpt4 key购买 nike

我想指定一个特殊的按钮,这样我就不必调整我使用的每个按钮,但我希​​望它的事件触发不同类中的函数。

main.py

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.stacklayout import StackLayout
from kivy.properties import ObjectProperty


class FancyButton(Button):
imp = ObjectProperty(None)


class Important(StackLayout):

def NoInspiration(self, smile):
print("Received: {}".format(smile))


class TestApp(App):
def build(self):
pass

if __name__ == '__main__':
TestApp().run()

test.kv(工作)

#:kivy 1.9.0

<FancyButton@Button>:
on_release: self.parent.NoInspiration(':)')


<Important>:
id: imp

FancyButton:
text: "smiley"

BoxLayout:
Important

Received: :)

test.kv(工作)

#:kivy 1.9.0

<FancyButton>:
on_release: self.parent.NoInspiration(':)')


<Important>:
id: imp

BoxLayout:
FancyButton:
text: "smiley"

BoxLayout:
Important

在第二个 test.kv 中,我在 FancyButton 前面添加了“BoxLayout:”,突然出现错误:

AttributeError: 'BoxLayout' object has no attribute 'NoInspiration'

问题

  • 为什么 self.parent 只引用直接父级而不是第二个示例中的<重要>?
  • 如何让 中的 on_release: 指向函数 NoInspiration(),同时将该函数保留在 中?

跟进问题

最佳答案

将 kv 更改为此

<FancyButton>:
on_release: self.imp.NoInspiration(':)')


<Important>:
id: imp

BoxLayout:
FancyButton:
text: "smiley"
imp: root

BoxLayout:
Important

关于python - Kivy 外部规则固有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618565/

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