建立根程序/访问它作为应用程序根目录?

2024-04-24 16:19:58 发布

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

在下面的文件中将“MyKivyRoot”创建为我的根小部件时,我遗漏了什么步骤?在

我的印象是.kv文件中最上面/最左边的小部件将自动被视为根部件。但显然我错过了一些重要的步骤。在

使用“app.root.show_文本()“似乎没有指向正确的位置(我得到一个“'NoneType'对象没有属性'show'u text'”错误)。在

但我可以从<;MyKivyRoot>;块中访问该方法,方法使用“root.show_文本()”

我忘了在这里做什么?在

这是我的主.py':

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

class MyKivyRoot(BoxLayout):
    def show_text(self):
        return "Here is your text"

class NewClass(BoxLayout):
    pass

class MyKivyApp(App):
    pass

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

这是千伏'

^{pr2}$

我一直在研究“用Kivy创建应用”一书,书中的代码没有问题(我有PySide的经验)。但当我尝试自己做实验时,我马上就被这个基本的(我想)问题难住了。就我所能看到的,我把它和书中的(工作)代码完全相同,但是很明显我忽略了一些东西。在

任何帮助都将不胜感激!在


Tags: 文件方法textfrom文本importapp部件
1条回答
网友
1楼 · 发布于 2024-04-24 16:19:58

您需要返回一个根小部件。在

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

kv = '''
<MyKivyRoot>:
    Label:
        text: root.show_text()
    NewClass

<NewClass>:
    Label:
        text: app.root.show_text() if app.root else ''

# The first two just define classes, they don't create instances:
MyKivyRoot:
# This does
'''


class MyKivyRoot(BoxLayout):
    def show_text(self):
        return "Here is your text"


class NewClass(BoxLayout):
    pass


class MyKivyApp(App):
    def build(self):
        return Builder.load_string(kv)


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

相关问题 更多 >