Kivy嵌套ID

2024-09-30 20:20:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个客户管理软件,所以我需要创建一个GUI。我选择Kivy,因为它是开源的,LGPL。在

这个软件应该有多个面板,所以我需要有ID来访问每个面板中的小部件。我用kv语言创建了Kivy规则,但是当我嵌套一个类是另一个类时,我无法访问ID的规则。下面是一个示例代码:

布局应用程序.py

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.boxlayout import BoxLayout


class SkipperList(GridLayout):
    pass


class TestPanel(BoxLayout):
    def __init__(self, **kwargs):
        super(TestPanel, self).__init__(**kwargs)
        print "TestPanel ids:", self.ids


class MasterPanel(TabbedPanel):
    pass


class NjordApp(App):
    def __init__(self, **kwargs):
        super(NjordApp, self).__init__(**kwargs)

    def build(self):
        root = MasterPanel()
        return root

if __name__ == '__main__':
    application = NjordApp()
    application.run()

njord.kv

^{pr2}$

当我启动软件时,print only返回{}。 有人能告诉我如何访问按钮{}例如? 提前谢谢。在


Tags: fromimportselfid面板软件initdef
1条回答
网友
1楼 · 发布于 2024-09-30 20:20:11

您看不到id的原因是您正在打印TestPanel构造函数。它还没有完成创建,更不用说添加了什么了。如果在创建GUI后打印ID(即,通过按按钮),则会看到ID:

class TestPanel(BoxLayout):
    def __init__(self, **kwargs):
        super(TestPanel, self).__init__(**kwargs)
        print "TestPanel ids:", self.ids

    def test(self, *x):
        print self.ids


...

        Button:
            id: button_up
            size_hint: 1, 0.08
            text:'/\\'
            on_press: root.test()

输出:

^{pr2}$

相关问题 更多 >