在 kivy

问题描述

如果您不确定小部件 ID 是什么,有没有办法检查或打印小部件 ID?我有一个我制作的布局,它是一个简单的 BoxLayout,其中我的标签有它的 id(它在 kv 文件中完成),而不是我在 GridLayout 中多次使用该布局。现在我有多个标签,但它们在技术上具有相同的 ID,或者如果您多次使用它,kivy 可能会更改 ID?这就是我想通过打印他们所有的 id 来检查的内容。

a3.py



from BareBones import Skeleton

menu = ['espresso','latte','capuccino','nescafe','Sahlep','Mahlep']
keys = []


class Double(BoxLayout):
    pass
class NewLayout(GridLayout):
    def set_text(self,text):
        print(self.root.ids.Skeleton.ids['label_id'].text)


    pass

class MainPage(BoxLayout):

    def __init__(self,**kwargs):
        super().__init__(**kwargs)


        iterator = 1



        for i in range(len(menu)):
            b = Button(size=(100,50))
            self.ids[str(iterator)] = b

            self.add_widget(b)

            keys.append(str(iterator))
            iterator = iterator+1
            print(keys)
            print(len(menu))

        for x,y in zip(menu,keys):
            self.ids[y].text = x


class RightSide(BoxLayout):

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

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






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


class MainApp(App):
    def build(self):
        return kv

MainApp().run()

b3.kv

NewLayout:

    cols: 2
    MainPage:
    RightSide:



<MainPage>:
    orientation: 'vertical'



<Skeleton>
    b1: b1
    b2: b2
    label_id: label_id

    Button:
        id: b1
        text:'+'
        on_press: root.on_button_click_plus()

    Label:
        id: label_id


    Button:
        id: b2
        text:'-'
        on_press: root.on_button_click_minus()


BareBones.py




class Skeleton(BoxLayout):
    count = 0
    my_text = ''
    drink_name = ''

    def on_button_click_plus(self):
        print("Button clicked")
        self.count += 1
        self.ids.label_id.text = str(self.count)
        self.my_text = str(self.count)
        return self.my_text
    def on_button_click_minus(self):
        print("Button clicked")
        self.my_text = str(self.count)
        self.ids.label_id.text = str(self.count)

        if self.count > 0:
            self.count -= 1
            self.ids.label_id.text = str(self.count)
        else:
            pass

    def trying(self):
        pass


class PlusMinus(BoxLayout):
    menu = ['espresso']
    keys = []

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

        self.add_widget(Skeleton())

所以这基本上是这样的:

GUI

我基本上想要做的是有一个按钮来收集所有标签文本(数字),以便我可以将它们与菜单数组配对,以了解其中有多少被添加到我们的篮子中。我也想重置标签,但是我不知道如何获得代码中到目前为止深入的文本。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)