kivy python 小部件实例或所有小部件

Posted

技术标签:

【中文标题】kivy python 小部件实例或所有小部件【英文标题】:kivy python widget instance or all widgets 【发布时间】:2017-09-23 02:53:20 【问题描述】:

请帮助我理解 python 中的类/实例。我想制作几个按钮,并在单击时更改按钮的颜色。我不明白为什么 on_touch_down 会改变类的所有实例的颜色,而不是被触摸的那个。我很难找到答案,因为我不知道如何命名,我对对象没有太多经验。请解释一下。谢谢你一百万。

import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.graphics import Color, Ellipse

class MemoWidget(Button):
    def on_touch_down(self, touch):
         self.background_color=[100,100,1,1]

class MyApp(App):
    def build(self):
        root = BoxLayout(orientation='vertical',spacing=4)
        m1 = MemoWidget()
        m2 = MemoWidget()
        m3 = MemoWidget()
        root.add_widget(m1)
        root.add_widget(m2)
        root.add_widget(m3)
        return root

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

【问题讨论】:

Kivy 使用 RGBA 0-1 格式,即值 255 的 0% 到 100%,而不是直接使用值 0-255。 好资料,谢谢! 【参考方案1】:

您可能认为on_touch_down 只会影响您触摸的小部件。但它会影响该类的所有小部件。 所以你可能想要的是on_presson_release,只影响小部件本身。

class MemoWidget(Button):
    def on_release(self):
         self.background_color=[100,100,1,1]

【讨论】:

我现在明白了,谢谢你的回答。 欢迎您。

以上是关于kivy python 小部件实例或所有小部件的主要内容,如果未能解决你的问题,请参考以下文章

在 kivy 小部件中访问父对象的大小参数

在 Kivy 中传递自定义小部件属性

kivy - 绑定弹出窗口关闭以从另一个小部件实例中运行

如何在 Kivy 屏幕小部件中初始化实例

在 kivy (python) 中更新小部件

用python读/写kivy小部件属性