【问题标题】:Creating a Button in Kivy在 Kivy 中创建按钮
【发布时间】:2021-03-31 20:01:17
【问题描述】:

我曾与 Kivy 合作过一段时间,现在正准备再次使用它。出于某种原因,我无法简单地创建一个按钮。该脚本运行没有错误,但没有产生任何东西(我得到一个黑屏)。我错过了什么?

ma​​in.py

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


class MainScreen(Widget):
    pass


class SimpleWidget(Widget):
    pass


class MyApp(App):
    def build(self):
        return MainScreen()


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

ma​​in.kv

<SimpleWidget>
    Button:
        on_press: print('It's working')

<MainScreen>
    BoxLayout:
        orientation: 'vertical'
        SimpleWidget:
            text: 'Train & Model'
            color: 'red'
            background_color: 'grey'
            font_size: 30
        SimpleWidget:
            text: 'Model'
            color: 'blue'
            background_color: 'grey'
            font_size: 30

【问题讨论】:

    标签: python button kivy


    【解决方案1】:

    您的问题是 .kv 文件未加载。 Kivy 说,如果您的 kv 文件名为“main.kv”并且与您的 main.py 文件位于同一目录中,则应该自动加载它。对我来说,这从未发生过,所以我喜欢显式加载文件。 注意:我还删除了 boxlayout 的“orientation”参数,因为它会导致问题:

    ma​​in.py:

    from kivy.app import App
    from kivy.uix.widget import Widget
    from kivy.uix.label import Label
    from kivy.lang import Builder
    
    class MainScreen(Widget):
        pass
    
    
    class SimpleWidget(Widget):
        pass
    
    
    class MyApp(App):
        def build(self):
            kv = Builder.load_file("main.kv")
            return MainScreen()
    
    
    if __name__ == '__main__':
        MyApp().run()
    

    ma​​in.kv:

    <SimpleWidget>
        Button:
            on_press: print("It's working")
    
    <MainScreen>
        BoxLayout:
            SimpleWidget:
                text: 'Train & Model'
                color: 'red'
                background_color: 'grey'
                font_size: 30
            SimpleWidget:
                text: 'Model'
                color: 'blue'
                background_color: 'grey'
                font_size: 30
    

    【讨论】:

    • 是的,行得通!您已将 Builder 设置为 kv,但不要在任何地方调用 kv?此外,我在那里有创建两个按钮的方向。按钮似乎是堆叠在一起的?
    • 我不能告诉你说实话。似乎以任何一种方式加载文件。我最近与另一位用户进行了一次小讨论,他声称,如果文件遵循约定,则显式加载 kv 文件不是一个好主意。如前所述,对我来说,这从未发生过,所以请留意任何问题。至于方向:我再次查看了您的代码,“它正在工作”存在一些问题,因为它包含一个撇号。删除该行对我来说似乎是最简单的解决方案。欢迎再次添加。
    • 是的,我也注意到了这一点,我确实解决了这个问题。一切正常,但不是“T”。仅创建一个按钮,位于应用程序的左下方。上面没有文字,也没有遵循我上面使用的属性。但是它会打印出It's working 文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    相关资源
    最近更新 更多