当我点击一个按钮时,不同的按钮会在kivy recycleview中闪烁

2024-04-26 00:21:48 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我知道有两个类似的问题,但我还没有找到解决这些问题的办法。 当我在kivy应用程序中单击RecycleView屏幕上的一个按钮时,不同的按钮会闪烁。我没有对按钮做任何更改,所以我在代码中没有看到任何错误,但可能有一些我没有看到的东西。 代码如下:

from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.uix.recycleview import RecycleView
from kivy.app import App

class Kupci_sve(RecycleView, Screen):
    def __init__(self, **kwargs):
        super(Kupci_sve, self).__init__(**kwargs)
        self.data = [{"text": str(i)} for i in range(20)]
        self.bar_width = 8
        self.scroll_type = ['bars']


kv = Builder.load_string('''
<Kupci_sve>:
    name: 'kupci_sve'
    viewclass: 'Button'
    RecycleBoxLayout:
        default_size: (None, 100)
        default_size_hint: (1, None)
        size_hint_y: None
        height: self.minimum_height
        orientation: "vertical"

        ''')


class app(App):
    def build(self):
        return Kupci_sve()

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

我将这个屏幕导入到main.py文件并从那里运行它,但我没有粘贴代码,因为我认为它与这个问题无关。如果你需要任何其他信息,就告诉我。多谢各位


Tags: 代码fromimportselfnoneappsize屏幕
1条回答
网友
1楼 · 发布于 2024-04-26 00:21:48

如果没有一个最小的、完整的、可复制的示例,我怀疑您的问题可能在于使Kupci_sve类同时扩展ScreenRecycleView。更好的方法是只扩展Screen,并简单地在<Kupci_sve>kv规则中包含一个RecycleView

我的意思是:

<Kupci_sve>:
    name: 'kupci_sve'
    RecycleView:
        id: rv   # added id
        bar_width: 8
        scroll_type: ['bars']
        viewclass: 'Button'
        RecycleBoxLayout:
            default_size: (None, 100)
            default_size_hint: (1, None)
            size_hint_y: None
            height: self.minimum_height
            orientation: "vertical"

并且Kupci_sve类变成:

class Kupci_sve(Screen):
    def __init__(self, **kwargs):
        super(Kupci_sve, self).__init__(**kwargs)
        self.ids.rv.data = [{"text": str(i), "on_release":partial(self.butt_release, i)} for i in range(20)]

    def butt_release(self, index):
        print('butt_release:', index)

相关问题 更多 >