gpt4 book ai didi

android - Kivy - 如何从 ListView 调用函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:57 30 4
gpt4 key购买 nike

所以我正在努力解决这一点,我无法找到一种方法来在按下 ListView 项时通过过程传递值。下面的示例是我想要发生的事情以及我的主要代码是如何设置的一个更简单的版本。目标是可以在 KV 文件中标记为 on_release: 的散列上看到 ChangeScreen(self.index)。但是问题是我不知道如何成功调用 ChangeScreen。谢谢!

基维:

#: import main main
#: import ListAdapter kivy.adapters.listadapter.ListAdapter

AppScreenManager:
DemoScreen1:
id: screen1
DemoScreen2:
id: screen2

<DemoScreen1>:
name: "demoscreen1"
BoxLayout:
orientation: "vertical"
ListView:
adapter:
ListAdapter(data=["Screen 1","Screen 2"], cls=main.ListButton)

<DemoScreen2>:
name: "demoscreen2"
orientation: "vertical"
BoxLayout:
orientation: "vertical"
Label:
id: labText
text: "Hello World"

<ListButton>:
height: self.texture_size[1]
on_release: ### HOW DO I CALL THE ChangeScreen FUNCTION HERE

python :

import kivy
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty, ObjectProperty, ListProperty
from kivy.uix.listview import ListItemButton


class DemoScreen1(Screen):
def ChangeScreen(self, option):
if option == 0:
print("Screen1")
self.parent.ids.screen2.labelUpdater("Screen 1 was pressed")
else:
print("Screen2")
self.parent.ids.screen2.labelUpdater("Screen 2 was pressed")
self.parent.current = "demoscreen2"

class DemoScreen2(Screen):
labText = StringProperty()
def labelUpdater(self,newText):
self.ids.labText.text = newText

class ListButton(ListItemButton):
data = ListProperty()

class AppScreenManager(ScreenManager):
pass
class Tester(App):
pass
if __name__ == '__main__':
Tester().run()

最佳答案

另一种解决方案:

...
<ListButton>:
height: self.texture_size[1]
on_release: self.parent.parent.parent.parent.parent.ChangeScreen(self.index)

...

但只对 on_presson_release 这样的事件执行此操作,永远不要对 on_parent 执行此操作,因为在调用最后一个事件时它们没有父级

对于解释,您只需要知道 self.parent.parent.parent 是您的 ListView

希望对你有帮助

关于android - Kivy - 如何从 ListView 调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47821478/

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