Python 如何在kivy中通过不同的类或根小部件传递变量?

Python 如何在kivy中通过不同的类或根小部件传递变量?,python,kivy,kivy-language,Python,Kivy,Kivy Language,我正在创建一个应用程序,其中我在一个类中确定一个变量,并需要将其传输到另一个类。我想使用id,但这不适用于不同的根小部件。然后我发现了factory,它看起来很有希望,而且似乎有些效果,但是当我在PopupColor类中更新变量时,它在DrawScreen类中不会更新 这是密码 py: 千伏: : 标题:“选择一种颜色” 尺寸提示:0.75,0.75 id:popupcolor 盒子布局: 填充:5 间距:5 方向:“垂直” 颜色选择器: id:颜色选择器 大小提示:1.0,1.0 按钮: 文本

我正在创建一个应用程序,其中我在一个类中确定一个变量,并需要将其传输到另一个类。我想使用id,但这不适用于不同的根小部件。然后我发现了factory,它看起来很有希望,而且似乎有些效果,但是当我在PopupColor类中更新变量时,它在DrawScreen类中不会更新

这是密码

py:

千伏:

:
标题:“选择一种颜色”
尺寸提示:0.75,0.75
id:popupcolor
盒子布局:
填充:5
间距:5
方向:“垂直”
颜色选择器:
id:颜色选择器
大小提示:1.0,1.0
按钮:
文本:“选择颜色”
大小提示:1,0.2
发布时:弹出颜色。发布时按下(颜色选择器)
: 
按钮:
大小提示:0.2,0.1
字体大小:30
文本:“返回”
发布时:Factory.PopupColor().open()
颜色按钮:
文本:“测试”
pos_提示:{“center_x”:0.5,“y”:0.1}
发布时:root.testy()
那么我该怎么做?我离这里有多远


编辑:因此,错误似乎不是真正的工厂零件,而是更多,因此PopupColor中的变量不会永久更改。

问题是,当您更改属性时,您使用的是引用此实例的
self

但是,由于您创建了一个新的
PopupColor
对象,因此每次打开弹出窗口时,都需要将
color
视为一个共享变量。
所以你可以像这样改变颜色:

PopupColor.color = colorpicker.color
这样,您可以将属性
color
视为与所有
PopupColor
对象共享

<PopupColor>:
    title: 'Pick a Color'
    size_hint: 0.75, 0.75
    id: popupcolor

    BoxLayout:
        padding: 5
        spacing: 5
        orientation: 'vertical'

        ColorPicker:
            id: colorpicker
            size_hint: 1.0, 1.0

        Button:
            text: 'Choose Color'
            size_hint: 1, 0.2
            on_release: popupcolor.on_press_dismiss(colorpicker)

<DrawScreen>: 

    Button:
        size_hint: 0.2,0.1
        font_size: 30
        text: "Back"
        on_release: Factory.PopupColor().open()

    ColorButton:
        text: "Test"
        pos_hint:{"center_x":0.5, "y":0.1}
        on_release: root.testy()
PopupColor.color = colorpicker.color