在Kivy中创建全局变量

2024-06-12 21:35:51 发布

您现在位置:Python中文网/ 问答频道 /正文

几天来,我一直在努力在Kivy中为widget属性创建一个全局变量。我越来越沮丧了(可能是因为我对编码还不熟悉),而且似乎没有任何在线帮助来解决这个问题。在

我的代码如下[PYTHON后跟KIVY]:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty



class ScreensManaged(ScreenManager):
    pass

class MainScreen(Screen):
    pass

class SettingsScreen(Screen):
    pass

class StoryScreen(Screen):
    pass

class StoryApp(App):
    def build(self):
        return ScreensManaged()

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

还有。。。。在

^{pr2}$

感兴趣的问题领域:

<StoryScreen>:
     Label:
         text: firstname.text

我知道它不是这样工作的,因为小部件的属性被限制在类范围内——但是当我试图在Python中将StoryScreen作为SettingsScreen的一个类时,Kivy不会打开——当我尝试在SettingsScreen类中创建一个全局变量时

class SettingsScreen(Screen):
    global first
    first = self.ids['first name']

class SettingsScreen(Screen):
   first = self.ids['first name']
   global first 

或者当我试图在StoryApp中创建变量时,程序崩溃了——也许我不需要一个全局变量,但是我用纯Python编写了这个应用程序的基本内部,使用全局变量,通过Kivy创建这个应用程序比在Python上学习Swift和Java要容易得多真是太搞笑了。为什么我要做18件事才能让程序记住Swift中的一个字符串呢。在

有什么帮助吗?在

另外,我确实看过StackOverflow,虽然有很多本地类Python解决方案,但没有任何基于Kivy语言的解决方案。在

p.p.S.我试着设置一个全局值(如API中所建议的),但它也会使程序崩溃。。。在

故事屏幕目前没有连接到任何按钮上,因为我正在调试并试图找出哪个部分的代码导致程序崩溃-这就是为什么所有按钮都设置为“设置”或“主”。在


Tags: fromimportself程序passscreenclassfirst
1条回答
网友
1楼 · 发布于 2024-06-12 21:35:51

不要设置全局变量,计算出两个类之间的关系并在它们之间传递直接引用。在

class SettingsScreen(Screen):
    global first
    first = self.ids['first name']

这纯粹是因为Python的原因-自我.ids为类的每个实例填充,但此代码不是针对每个实例而是在类本身的定义处运行…此时它没有此属性,即使有也不会填充。在

but when I try to make StoryScreen a class of the SettingsScreen in Python, Kivy won't open

您的示例似乎没有包含这一部分,但是选择一种方便的方法在类之间传递变量是至关重要的。你是说StoryScreen是SettingsScreen的一个子类吗?在

另外,包含程序崩溃时得到的python回溯通常很有用。这包括有关问题的信息,对于调试来说比仅仅知道程序崩溃要有用得多。在

相关问题 更多 >