【问题标题】:Kivy language function call on button press using screens使用屏幕按下按钮时调用 Kivy 语言功能
【发布时间】:2016-01-22 17:26:08
【问题描述】:

我一直在摆弄 Kivy 语言并进行了一些搜索,但没有找到适合我情况的解决方案。我想我在这里遗漏了一些基本的东西。

我试图通过按下按钮在屏幕中调用一个函数,我想通过一个 kv 文件来促进这一点。我简化了代码,并在k​​v文件中省略了一些格式,例如布局和按钮大小等。

'entered'变量在屏幕上显示为“Not Entered”,但是当我按下按钮时,标签没有改变,函数没有输入,什么也没有发生。

Python:

import kivy
kivy.require('1.9.1')

from kivy.app import App
from kivy.uix.screenmanager import Screenmanager, Screen
from kivy.properties import StringProperty

class ScreenManager(ScreenManager):
    pass

class StartMenu(Screen):
    pass

class MyScreen(Screen):
    entered = StringProperty()
    entered = "Not Entered"

    def my_function(self, *args):
        self.entered = "Entered"

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

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

基维:my.kv

#:kivy 1.9.1

<ScreenManager>:
    StartMenu:
    MyScreen:

<StartMenu>:
    name: 'StartMenu'
    Button:
        on_release:
            root.manager.current = 'MyScreen'

<MyScreen>:
    name: 'MyScreen'
    Label:
        text: root.entered
    Button:
        on_release:
            root.my_function()

感谢您的宝贵时间!

【问题讨论】:

    标签: python kivy


    【解决方案1】:

    问题出在这里:

    class MyScreen(Screen):
        entered = StringProperty()
        entered = "Not Entered"
    

    entered 立即被覆盖(并且是标准类属性,失去所有事件魔法)。而是将其初始化为entered = StringProperty("Not Entered"),或者在kv 文件中将其初始化为

    <MyScreen>:
        entered: "Not Entered"
    

    顺便说一句,为了使您的示例正常工作,应该有某种布局:

    #:kivy 1.9.1
    
    <ScreenManager>:
        StartMenu:
        MyScreen:
    
    <StartMenu>:
        name: 'StartMenu'
        Button:
            on_release:
                root.manager.current = 'MyScreen'
    
    <MyScreen>:
        entered:"Not Entered"
        name: 'MyScreen'
        GridLayout:
            cols: 2
            Label:
                text: root.entered
            Button:
                on_release:
                    root.my_function()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2017-12-05
      相关资源
      最近更新 更多