【问题标题】:Python: Kivy module doesn't show widgetPython:Kivy 模块不显示小部件
【发布时间】:2021-08-19 03:03:12
【问题描述】:

我正在尝试使用 kivy 创建一个简单的界面;我正在关注文档,但我不明白为什么我只能创建一个空白窗口,而小部件却不显示。 我在 Ubuntu 20.0.4

我创建了两个文件: main.py

from kivy.app import App
from kivy.uix.widget import Widget

class MainWidget(Widget):
    pass


class GameApp(App):
    pass


GameApp().run()

游戏.kv

#:kivy 2.0.0

<MainWidget>:
    Button:
        text: "Hello"
        size: "100dp", "80dp"
        pos: "100dp", "200dp"
        color: 0, 0, 1, 1
    Label:
        text: "Hello2"
        size: "100dp", "80dp"
        pos: "200dp", "300dp"
        color: 1, 0, 0, 1

这是终端的回复

[INFO   ] [Logger      ] Record log in /home/marco/.kivy/logs/kivy_21-08-18_60.txt
[INFO   ] [Kivy        ] v2.0.0
[INFO   ] [Kivy        ] Installed at "/home/marco/.local/lib/python3.8/site-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.8.10 (default, Jun  2 2021, 10:49:15) 
[GCC 9.4.0]
[INFO   ] [Python      ] Interpreter at "/bin/python3"
[INFO   ] [Factory     ] 186 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] Backend used <sdl2>
[INFO   ] [GL          ] OpenGL version <b'4.3 (Compatibility Profile) Mesa 20.2.6'>
[INFO   ] [GL          ] OpenGL vendor <b'nouveau'>
[INFO   ] [GL          ] OpenGL renderer <b'NV126'>
[INFO   ] [GL          ] OpenGL parsed version: 4, 3
[INFO   ] [GL          ] Shading version <b'4.30'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Base        ] Start application main loop
[INFO   ] [Base        ] Leaving application in progress...

【问题讨论】:

    标签: python kivy


    【解决方案1】:

    来自 Kivy 文档

    要使用小部件树初始化您的应用,请覆盖应用类中的 build() 方法并返回您构建的小部件树。

    因此,为了显示您的 MainWidget,从 kivy App 类继承的 GameApp 类必须重写 build() 方法并从 MainWidget 返回一个实例,如下所示:

    class GameApp(App):
        def build(self):
            return MainWidget()
    

    【讨论】:

    • 我试过了但是不行,我认为问题与文件.kv有关,因为我注意到使用def build(self): return Label(text='Hello world'),它显示了文本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多