如何使用kivy从def中的其他类访问变量?

恩佐·德兹(Enzo Dtz)

问题

我正在使用kivy和ScreenManager来制作GUI并使用许多屏幕。

我有一个Screen1类,其中有一个名为的变量num,其值为1。

Screen1 GUI有一个按钮,当我按下按钮时,它会调用一个def,它将变量calledwithbutton更改numself.num = 2,然后将屏幕更改为Screen 2。

Screen2类的变量var值为Screen1().num

Screen2 GUI有一个标签,文字是 str(var)

预期的结果是Screen2 GUI标签文本= '2'

但是真正的结果是,Screen 2 GUI标签文本= '1'

如何'2'基于num变量将Screen 2 GUI标签文本更改为

.py代码

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen


class Manager(ScreenManager):
    pass

class Screen1(Screen):

    num = 1

    def calledwithbutton(self):

        self.num = 2
        self.parent.current = 'Screen 2'

class Screen2(Screen):

    var = Screen1.num

class RootApp(App):

    def build(self):
        return Manager()

RootApp().run()

.kv代码

<Manager>:

    Screen1:
        name: 'Screen 1'

    Screen2:
        name: 'Screen 2'

<Screen1>:

    Button:
        text: 'This is a button'
        on_press: root.calledwithbutton()

<Screen2>:

    Label:
        text: str(root.var)
永乐

对于这类任务,您不必使用静态变量,因为该变量不会通知更改,在您的情况下,var在创建Screen2对象时仅采用num的值1,因此它永远不会更改为2。

在千篇一律的情况下,针对这些情况的解决方案是使用属性(在本例中为NumericProperty),然后在属性之间进行绑定。

* .py

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import NumericProperty

class Manager(ScreenManager):
    pass

class Screen1(Screen):
    num = NumericProperty(1)

    def calledwithbutton(self):
        self.num = 2
        self.manager.current = 'Screen 2'

class Screen2(Screen):
    var = NumericProperty(0)

class RootApp(App):
    def build(self):
        return Manager()

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

* .kv

<Manager>:
    Screen1:
        id: screen1
        name: 'Screen 1'
    Screen2:
        id: screen2
        name: 'Screen 2'
        var: screen1.num # binding

<Screen1>:
    Button:
        text: 'This is a button'
        on_press: root.calledwithbutton()

<Screen2>:
    Label:
        text: str(root.var)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何访问其他类中的变量

如何使用其他类中的变量?

如何从Java中的其他类访问变量?

如何使用扩展从其他类访问变量?

从其他类访问变量?

PHP如何从类内部的其他变量访问变量?

使用Kivy访问类变量

如何创建一个 python kivy 标签,该标签的颜色存储在一个变量中,该变量可以被其他 kivy 小部件类访问并在运行时更新

如何在Java中的其他类中访问方法的变量?

如何在C ++中的其他类的方法中访问变量

如何以可以从 C# 中的其他方法访问的方式存储随机类变量?

Codeigniter:如何在一个类中访问多个其他函数的多个变量?

从Java中的其他类访问私有变量

访问其他 Windows 窗体类 C# 中的变量

如何在python类中的其他函数中定义(变量)的函数内使用变量?

如何使用其他结构变量访问不同的结构变量?

如何让变量依赖于类中的其他变量?

如何在其他类中使用一个类中的变量?

如何在Perl中设置类似Java的“静态变量”,其他类可以访问该静态变量?

C#,如何使用WebAPI在类中创建变量,然后可以在其他类中引用这些变量?

使用通用类访问其他类中的其他方法

如何在Flutter(DART)中访问其他类的方法?

如何在Qt中访问其他类的对象?

如何访问 Flash Builder 中的其他类

TypeScript如何访问其他类中定义的对象

如何访问objective c的其他模块中的swift类

如何使用php在其他页面中访问会话变量?

如何使用Cakephp在其他控制器中访问变量

如何从python中的其他函数访问变量