【问题标题】:How to separate a python class that needs access the kv file如何分离需要访问kv文件的python类
【发布时间】:2021-07-30 17:41:27
【问题描述】:

所以我的 python 文件中有一个类,我想将它与主 python 文件分开,因为我需要修改它几次并在主文件中使用它。但是,由于该类需要访问 kivy 文件来读取 id,因此我无法在不加载 kv 文件两次的情况下将该类与主类分开,这会使一切都搞砸了。我怎样才能基本上使这个类可导入?

class RightSide(BoxLayout):
    order_size = []
    overlay = StringProperty('Current Order will be displayed here')
    tabname = parameter_length
    iterator = 0

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.orientation = 'vertical'

        for i in range(len(menu)):
            self.add_widget(Skeleton())

    def tally(self):
        global OID
        order_size = self.order_size
        print(OID)
        OID = OID + 1
        print(OID)
        rightside = kv.ids.one.two.three.newlay.rightside
        for skel in rightside.children:
            if isinstance(skel, Skeleton):
                if self.iterator > len(menu)-1:
                    self.iterator = 0
                    order_size.clear()

                self.tabname[self.iterator] = skel.drink_name, skel.ids.label_id.text
                self.iterator = self.iterator + 1
                order_size.insert(0, skel.ids.label_id.text)

        order_size.insert(0, OID)

        self.tabname.reverse()
        self.tabname.insert(0, OID)

        makeitastring = ''.join(map(str, self.tabname))
        self.overlay = makeitastring
        con = sql.connect(host='xxxxxx', user='root', password='xxxxxxx.', database='new_schema')
        cur = con.cursor()




        cur.execute(query, order_size)



        con.commit()
        con.close()



    def clean(self):
        rightside = kv.ids.one.two.three.newlay.rightside
        for skel in rightside.children:
            if isinstance(skel, Skeleton):
                skel.ids.label_id.text = '0'
                skel.count = 0




kv = Builder.load_file("b.kv")

【问题讨论】:

  • 访问ids与定义类的文件无关。
  • 但是需要定义 kv 以便我遍历 id,如果我没有在 py 文件中定义 kv,这个类会给出错误,因为 kv 不等于任何东西

标签: python class import kivy ids


【解决方案1】:

所以解决方案是使用“import new_file.py”在单独的 py 文件中声明 kv 变量并通过“new_file.kv”访问它

【讨论】:

  • 假设您的代码中某处有一个App,它从其build() 方法返回kv,那么您可以从代码中的任何位置以App.get_runnng_app().root 的形式访问kv
猜你喜欢
  • 2015-07-24
  • 2018-05-16
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多