gpt4 book ai didi

python - Kivy:如何从自定义 BoxLayout 显示 ScrollView?

转载 作者:行者123 更新时间:2023-11-28 18:57:39 32 4
gpt4 key购买 nike

我需要创建一个具有自定义行布局的项目列表。每行应该有一个图像,一个主按钮和两个其他小按钮(并排),按下主按钮后我想在该行下方的 ScrollView 中显示一个短文本。我正在使用如下所示的自定义 BoxLayout:

<InfoRow@BoxLayout>:
landmarkName: self.landmarkName
pozaId: self.pozaId
rowId: self.rowId
starId: self.starId
svId: self.svId

show_infoId: self.show_infoId
orientation: 'vertical'
size_hint_y: None
height:self.minimum_height

BoxLayout:
size_hint_y: None
height: 50
pos_hint: {"x": 0, 'top': 1}

AsyncImage:
size_hint_x: 0.2
id: root.pozaId
source: root.srcImg

ToggleButton:
id: root.rowId
font_size: self.height * 0.5
text_size: self.size
text: root.landmarkName
on_release: root.toggle_info()

ToggleButton:
#on_release: self.parent.parent.ids.calc_input.text += self.text
size_hint: None, None
width: 50
height: 50
background_down: 'data/check.png'
background_normal: 'data/full_plus.png'

ToggleButton:
id: root.starId
size_hint: None, None
height: 50
width: 50
background_down: root.starImg
background_normal: root.starImg
on_release: root.saveLocation()

ScrollView:
id: root.svId
size_hint_y: None
pos_hint: {"x": 0.12, 'top': 1}
height: 0

InfoTextInput:
id: root.show_infoId
text: ""
size_hint_y: None
height: self.minimum_height

还有我的 python 代码:

class InfoRow(BoxLayout):
pozaId = StringProperty(' ')
rowId = StringProperty(' ')
starId = StringProperty(' ')
svId= StringProperty(' ')
show_infoId=StringProperty(' ')
landmarkName = StringProperty(' ')
pressed = False
starImg = StringProperty('data/white.png')
srcImg = StringProperty('data/white.png')

def __init__(self, **kwargs):
super(InfoRow, self).__init__(**kwargs)

def toggle_info(self):

self.pressed = not self.pressed
if self.pressed:
height = self.height * .25
else:
height = 0

Animation(height=height, d=.25, t='out_quart').start(
self.ids[self.svId])

if not self.pressed:
self.ids[self.show_infoId].focus = False
return

self.ids[self.show_infoId].text = "TO DO"
self.ids[self.svId].scroll_y = 1

def saveLocation(self):
pass

我在哪里创建列表:

类主屏幕(屏幕):

def getSpecificInfo(self, category):

...

self.ids["extraInfo"].clear_widgets()
for i in range (0, 15):
wid = InfoRow(pozaId = pozaId, landmarkName=landmarkName, starImg = starImg ,rowId = rowId, starId = starId, svId= svId, show_infoId=show_infoId)
self.ids["extraInfo"].add_widget(wid)

现在我设法动态创建了我的列表,但是按下按钮后 ScrollView 没有显示,我有以下错误:

self.ids[self.svId])
键错误:'sv0'

我不知道我做错了什么。有什么想法吗?

最佳答案

问题 - KeyError

self.ids[self.svId])
KeyError: 'sv0'

根本原因

这意味着 self.svId 中的值 'sv0'self.ids 中不存在 字典类型属性。

注意事项

在 Python 代码中动态创建的小部件,分配给小部件的 id 不会添加到 self.ids 中。您可能想要创建自己的字典来存储它们以备日后访问。

关于python - Kivy:如何从自定义 BoxLayout 显示 ScrollView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56466323/

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