【问题标题】:Which is the best way to link Widgets between .kv and .py file这是在 .kv 和 .py 文件之间链接小部件的最佳方式
【发布时间】:2018-02-08 21:32:17
【问题描述】:

我需要一些帮助才能理解 Kivy 库。 如果我必须像这个例子一样创建一个问题:

但是使用按钮来更改将保持在同一位置的页面我必须如何继续? 如何将大量小部件链接在一起并将 .kv 文件与 .py 文件链接在一起? 我正在尝试,但没有任何结果。

例如,我用按钮和彩色背景编写了这段代码,但它不起作用:

.py 部分:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout

class Principale(BoxLayout):
    pass


class TryApp(App):
    def build(self):
        self.root = Builder.load_file('questionario.kv')
        Principale()


if __name__ == '__main__':
    PongApp().run()

.kv 部分:

#:kivy 1.0.9
<Principale>:
    canvas:
        Color:
            rgb : 0.2549,0.73333,0.12156
        Rectangle:
            size:self.size
    size_hint : 1,1
    orientation:"vertical"
    padding : 30

    Button:
        text: "ciao"
        size_hint : 0.12,0.12

非常感谢

【问题讨论】:

  • build 方法中,您必须返回根小部件的实例:return Principale()

标签: python user-interface kivy kivy-language


【解决方案1】:
class TryApp(App):
    def build(self):
        self.root = Builder.load_file('questionario.kv')
        Principale()

您需要在这里返回校长。

return Principale()

不只是创造它。

另外,您调用了您的应用程序 TryApp,但您正在尝试运行名为 PongApp 的东西

所以这个:

PongApp().run()

应该是:

TryApp().run()

所以最后应该是这样的:

class TryApp(App):
    def build(self):
        self.root = Builder.load_file('questionario.kv')
        return Principale()


if __name__ == '__main__':
    TryApp().run()

注意:它是无害的,但您不需要将 kv 声明为 root。在这种情况下它已经知道了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多