Ich wollte eine App mit zwei Sprachen (Deutsch und Englisch) und Einstellungen erstellen, damit ich zwischen den Sprachen wechseln kann. Da die Sprachklasse Teil der App ist, muss ich sie mit app.Lanuage verwenden, aber ich habe die obige Fehlermeldung erhalten.kivy error NameError: globaler Name 'app' ist nicht definiert
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.settings import SettingsWithSidebar
from setjson import *
Builder.load_string('''
<Interface>:
orientation: 'vertical'
Button:
text: app.Lanuage.first_caption
font_size: 150
on_release: app.open_settings()
''')
class Interface(BoxLayout):
def __init__(self, **kwargs):
super(Interface, self).__init__(**kwargs)
self.test = app.Lanuage.all_button
class SettingsApp(App):
def build(self):
config = SettingsApp.get_running_app().config
language = config.getdefault("example", "optionsexample", "English").lower()
if language == 'english':
from lang_engl import Lang
if language == 'deutsch':
from lang_deutsch import Lang
self.Lanuage = Lang()
self.settings_cls = SettingsWithSidebar
self.use_kivy_settings = False
setting = self.config.get('example', 'boolexample')
return Interface()
def build_config(self, config):
config.setdefaults('example', {
'optionsexample': 'English',
'stringexample': 'some_string',
'pathexample': '/some/path'})
def build_settings(self, settings):
settings.add_json_panel('Panel Name',
self.config,
data=settings_json)
def on_config_change(self, config, section, key, value):
print 'value: ' + str(value)
SettingsApp().run()
Sie haben nur 'App' im Bereich, also entweder Sie' App.Language' oder Sie meinen das 'kivy.app' Modul dann wäre es entweder' kivy.app.Sprache' oder 'von kivy Import App ; App.Sprache'. Eigentlich habe ich weder in meinem Kivy-Paket. Sind Sie sicher, dass kivy eine Sprachschule/ein Sprachmodul hat? – syntonym
Nein, ich habe die Sprachklasse selbst erstellt und der App eine Instanz hinzugefügt. Und es funktionierte auch perfekt in kivy Sprache, aber nicht in Python –
Ah, Sie möchten einen Verweis auf die aktuelle App. Sie können das über 'App.get_running_app()' [Dokumentation] (https://kivy.org/docs/api-kivy.app.html#kivy.app.App.get_running_app) erreichen. – syntonym