首页 > 解决方案 > 如何通过 Kivy 语言上的键访问 dict 值?

问题描述

在我的 .py 上:

class DataGet(BoxLayout):
    def __init__(self, **kwargs):
        super(DataGet, self).__init__(**kwargs)
        self.data_get = {
            "FO2": 62,
            "Peek Pressure": 12,
            "Total Volume": 35,
            "PEEPe": 26,
            "Minute Volume": 98,
            "Respiratory Rate": 75,
        }
        self.updater = Thread(target=self.get_data, args=())

    get_fo2 = ObjectProperty(None)
    get_peepe = ObjectProperty(None)
    get_peek_pressure = ObjectProperty(None)
    get_minute_volume = ObjectProperty(None)
    get_total_volume = ObjectProperty(None)
    get_respiratory_rate = ObjectProperty(None)

    def get_data(self): #This is just a test function, not yet implemented
        while True:
            for data in self.data_get:
                self.data_get[data] = edg.update_data(self.data_get[data])
                print(self.data_get[data])
            print("###")
            print(f"fo2 = {self.data_get}")
            print("###")
            sleep(2)

在我的 .kv 上:

<DataGet>:
    get_fo2: get_fo2
    get_peepe: get_peepe
    get_peek_pressure: get_peek_pressure
    get_minute_volume: get_minute_volume
    get_total_volume: get_total_volume
    get_respiratory_rate: get_respiratory_rate
    on_kv_post: root.updater.start()
    BoxLayout:
        cols:1
        orientation: "vertical"

        BoxLayout:
            cols:2
            orientation: "vertical"
            halign: "center"

            Label:
                text: f"FO2"

            Label:
                id: get_fo2
                font_size: 60
                text: f"{root.data_get["FO2"]}"

当我调用执行代码时,终端输出:

     f"{root.data_get["FO2"]}"
                       ^
 SyntaxError: invalid syntax

这没有多大意义,除非它有不同的方式在 kv 语言上调用 dict 值。我已经阅读了 kivy 的 kv 语言文档,并没有找到任何关于如何声明和使用字典的参考资料。即使尝试了不同的语法,也没有成功。

标签: pythonkivykivy-language

解决方案


我认为你必须照顾你的报价:

     f"{root.data_get['FO2']}"

推荐阅读