【问题标题】:Can we use ColorPicker in on of the screens in a kv lang and use that in our kivy file?我们可以在 kv lang 的屏幕上使用 ColorPicker 并在我们的 kivy 文件中使用它吗?
【发布时间】:2018-07-18 05:53:18
【问题描述】:

我有一个树莓派。我在 kv 中使用屏幕管理器。有4个屏幕。第一个屏幕有 3 个按钮,其他屏幕有一个颜色选择器,当按下颜色选择器时我需要从中获取值。

我想使用来自的值。 Kv 文件并在 py 文件中使用它来进一步处理色轮。对我来说唯一重要的是 colorpicker.value

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:

    用户的 Kivy 应用功能

    我在 kv 中使用屏幕管理器。有4个屏幕。第一个屏幕有 3 个按钮和其他屏幕都有一个颜色选择器。

    解决方案 - 带 1 个屏幕的 ColorPicker 和 ScreenManager

    是的,在 Python 代码/脚本中,您可以访问在 kv 文件中定义的 ColorPicker 小部件的选定颜色。详情请参考小/骨架示例和输出。

    注意

    在示例中,感兴趣的ColorPicker().colorself.colorinstance.color

    Color Picker » color

    color
    

    颜色保存当前选择的 rgba 格式的颜色。

    color 是一个 ListProperty,默认为 (1, 1, 1, 1)。

    片段

    kv 文件

    <MainScreen>:
        ColorPicker:
            on_color:
                root.on_color(self, self.color)
    

    Python 脚本

    class MainScreen(Screen):
    
        def on_color(self, instance, value):
            print("\non_color:")
            print("\tvalue(rgba)={}".format(value))
            print("\tcolor(rgba)={}".format(instance.color))
            print("\tcolor(hex)={}".format(instance.hex_color))
            print("\tcolor(hsv)={}".format(instance.hsv))
    

    示例

    main.py

    ​​>
    from kivy.app import App
    from kivy.uix.screenmanager import ScreenManager, Screen
    
    
    class ScreenManagement(ScreenManager):
        pass
    
    
    class MainScreen(Screen):
    
        def on_color(self, instance, value):
            print("\non_color:")
            print("\tvalue(rgba)={}".format(value))
            print("\tcolor(rgba)={}".format(instance.color))
            print("\tcolor(hex)={}".format(instance.hex_color))
            print("\tcolor(hsv)={}".format(instance.hsv))
    
    
    class TestApp(App):
        title = "Kivy ColorPicker Demo"
    
        def build(self):
            return ScreenManagement()
    
    
    if __name__ == "__main__":
        TestApp().run()
    

    test.kv

    #:kivy 1.11.0
    
    <ScreenManagement>:
        MainScreen:
            name: 'main'
    
    <MainScreen>:
        ColorPicker:
            on_color:
                root.on_color(self, self.color)
    

    输出

    【讨论】:

    • 我认为你应该让提问者尝试一下,而不是直接做他的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多