【问题标题】:Kivy not changing screens with button on actionbarKivy 不使用操作栏上的按钮更改屏幕
【发布时间】:2018-08-27 08:39:14
【问题描述】:

我提到的代码来自 ikolim 的回答:Why is my Kivy Actionbar gone?

这是我的python代码:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.core.window import Window

Window.clearcolor = (1,1,1,1)

Builder.load_file("designdawkalamomarunong.kv")


class Menu(BoxLayout):
    manager = ObjectProperty(None)

class Add(Screen):
    pass

class Help(Screen):
    pass

class Credits(Screen):
    pass

class Manager(ScreenManager):
    addScreen = ObjectProperty(None)
    helpScreen = ObjectProperty(None)
    creditsScreen = ObjectProperty(None)

class AntsApp(App):

    def build(self):
        return Menu()


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

这是 kivy 代码:

<Menu>:
    manager: screen_manager
    orientation: "vertical"
    ActionBar:
        size_hint_y: 0.1
        ActionView:
            ActionPrevious:
            ActionButton:
                text: "Add"
                on_release: app.root.current = "add"
            ActionButton:
                text:"Help"
                on_release: app.root.current = "help"
            ActionButton:
                text: "Credits"
                on_release: app.root.current = "credits"
    Manager:
        id: screen_manager

<Add>:
    text: "hello boi"

<Help>:
    text: "hello world"

<Credits>:
    text: "goodbye world lol"

<Manager>:
    id: screen_manager
    addScreen: addScreen
    helpScreen: helpScreen
     creditsScreen: creditsScreen

    Add:
        id: addScreen
        name: 'add'
        manager: screen_manager

    Help:
        id: helpScreen
        name: 'help'
        manager: screen_manager

    Credits:
        id: creditsScreen
        name: 'credits'
        manager: screen_manager

当我运行它时,这是输出:

当我单击操作栏上的按钮时,它不会返回任何内容。我应该添加其他东西吗?提前谢谢你:)

编辑: 尝试这样做:

<Add>:
    Button:
        text: "hello boi"

它有效,但是当我尝试这个时:

<Add>:
    Label:
        text: "hello boi"

它没有用。我在这里错过了什么?

【问题讨论】:

    标签: python python-3.x kivy kivy-language


    【解决方案1】:

    问题

    kv文件

    1. 将所有出现的app.root.current 替换为root.manager.current,因为rootBoxLayout 小部件而不是ScreenManager 小部件。
    2. 每个屏幕在text 之前都缺少一个Label 小部件。
    3. 当您在 Screen 的每个类规则中将 Button 小部件实例化为子级时,文本是可见的。但是,当您将 Button 小部件替换为 Label 时,文本是不可见的。原因是因为 Label 的默认颜色文本是白色(rgba=1, 1, 1, 1),而 BoxLayout 的颜色也是白色。因此,您无法看到文本。如果使用标签小部件,请添加 color: (0, 0, 0, 1) # black color text

    示例

    kv 文件

    #:kivy 1.11.0
    
    <Menu>:
        manager: screen_manager
        orientation: "vertical"
        ActionBar:
            size_hint_y: 0.1
            ActionView:
                ActionPrevious:
                ActionButton:
                    text: "Add"
                    on_release: root.manager.current = "add"
                ActionButton:
                    text:"Help"
                    on_release: root.manager.current = "help"
                ActionButton:
                    text: "Credits"
                    on_release: root.manager.current = "credits"
        Manager:
            id: screen_manager
    
    <Add>:
        Label:
            text: "hello boi"
            color: 0, 0, 0, 1   # black color text
    
    <Help>:
        Label:
            text: "hello world"
            color: 0, 0, 0, 1   # black color text
    
    <Credits>:
        Label:
            text: "goodbye world lol"
            color: 0, 0, 0, 1   # black color text
    
    <Manager>:
        addScreen: addScreen
        helpScreen: helpScreen
        creditsScreen: creditsScreen
    
        Add:
            id: addScreen
            name: 'add'
    
        Help:
            id: helpScreen
            name: 'help'
    
        Credits:
            id: creditsScreen
            name: 'credits'
    

    输出

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 2020-08-29
      • 1970-01-01
      相关资源
      最近更新 更多