繁体   English   中英

将变量值从.KV 文件双向发送到 python 的最佳方法是什么?

[英]What is the best way to send variable values bidirectionally from .KV file to python?

从 KV 文件向 python 发送和接收数据的最佳实践是什么? 试着做一个简单的程序,用三个推子改变 object 的颜色。 我希望设置滑块位置的初始基值和 colors 滑块将控制的位置将在程序第一次运行时开始。 然后我希望能够获取 slider 值并在项目的其他部分使用这些值,然后在其他文本框中显示值或其他值。

我确实打算在这个项目中添加一个串行或网络控件。 基本上我想让程序的多个实例运行并且一个实例的 slider 运动值来控制另一个实例。 实现这一点超出了项目当前阶段的 scope,但如果有一些额外的步骤将滑块的值连接到其他代码块来实现这样的功能。 任何投入将不胜感激。

到目前为止,这就是我被困在.py 中的第 6 行的内容。 我不确定如何获取 3 个 slider 值并将它们输入文本框颜色值。 同时能够在程序的其他部分(例如打印语句或另一个文本框)中显示值。

from kivy.app import App
from kivy.uix.gridlayout import GridLayout

class MyLayout(GridLayout):
    def slide(self):
        self.ids["lable"].color = red,green,blue,1
        print(self.ids["red"].value)


class slider(App):

    def build(self):

        return MyLayout()

if __name__ == "__main__":
    window = slider()
    window.run()

.kv

#:kivy 1.10.0

<MyLayout>

    cols:2

    Slider:
        id: red
        min:0
        max:1
        #on_value:label.text = str(int(self.value))
        on_value: root.slide()


    Slider:
        id: green
        min:0
        max:1
        #on_value:label.text = str(int(self.value))
        on_value: root.slide()

    Slider:
        id: blue
        min:0
        max:1
        #on_value:label.text = str(int(self.value))
        on_value: root.slide()

    Label:
        id:label
        text:"0"

您看到的所有代码都是我从我找到的教程中拼凑起来的代码,所以如果我以错误的方式进行处理,因为我还不了解 Kivy 或 python。 大多数教程假设您非常了解 python 并且对面向 object 的编程有深入的了解。

您可以在您的slide()方法中调整Label的颜色:

def slide(self):
    self.ids["label"].color = self.ids.red.value, self.ids.green.value, self.ids.blue.value, 1
    print(self.ids["red"].value)

如果要在Label中显示颜色:

Label:
    id:label
    color: 1, 0.5, 0.75, 1  # initial color
    text: str(round(self.color[0], 2)) + ', ' + str(round(self.color[1], 2)) + ', ' + str(round(self.color[2], 2))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM