Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kivy access.kv变量_Python_User Interface_Kivy - Fatal编程技术网

Python Kivy access.kv变量

Python Kivy access.kv变量,python,user-interface,kivy,Python,User Interface,Kivy,我正在使用Kivy for python,我想知道是否有办法访问我在.kv文件中声明的一些变量,如下所示: #:set global_background_color_A (0.4,0.4,0.4, 1) #:set global_background_color_B (0.2,0.2,0.2, 1) #:set global_background_color_C (0.6,0.6,0.6, 1) #:set global_seperator_color_Blue (0.26,.545,.65,

我正在使用Kivy for python,我想知道是否有办法访问我在.kv文件中声明的一些变量,如下所示:

#:set global_background_color_A (0.4,0.4,0.4, 1)
#:set global_background_color_B (0.2,0.2,0.2, 1)
#:set global_background_color_C (0.6,0.6,0.6, 1)
#:set global_seperator_color_Blue (0.26,.545,.65,1)
现在,如果我能在python代码中动态更改一些按钮的背景色,那就太好了。为此,我必须访问这些变量

最简单的方法是什么

提前感谢,,
Finn

我使用以下代码作为示例应用程序:

控制器.kv

#:kivy 1.0
#:set global_background_color_A (0.4,0.4,0.4, 1)
#:set global_background_color_B (0.2,0.2,0.2, 1)
#:set global_background_color_C (0.6,0.6,0.6, 1)
#:set global_seperator_color_Blue (0.26,.545,.65,1)

<Controller>:
    label_wid: my_custom_label
    button_wid: my_custom_button

    BoxLayout:
        orientation: 'vertical'
        padding: 20

        Button:
            id: my_custom_button
            text: 'My controller info is: ' + root.info
            on_press: root.do_action()

        Label:
            id: my_custom_label
            text: 'My label before button press'
我已经用箭头标记了
\uuuu main\uuuu.py
中的重要行

如果查看kv语言解析器,您可以看到它使用
set
命令做了什么。它执行一些错误检查,并
eval()
s容器中的值
global\u idmap

现在,我认为这是不可取的。正如您所看到的,kivy没有公开
global\u idmap
。我认为这是一个不应该依赖的实现细节

如果您想更改代码中内容的颜色,只需执行以下操作:

def do_action(self):
    ...
    self.button_wid.background_color = (1, 0, 1, 1)

如果你发布了一个自给自足的例子(如我所做的),那么我就容易多了,请以后考虑。伟大的谢谢!:)
def do_action(self):
    ...
    self.button_wid.background_color = (1, 0, 1, 1)