Невозможно контролировать значение непрозрачности - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть логическая переменная уровня класса, которая говорит со всеми классами, и виджеты в каждом классе меняются в зависимости от погоды или нет, это значение верно. Непрозрачность выдает ошибку ниже, когда я пытаюсь выполнить. Я пробовал AsyncImages, но он выдал загрузку lo go, которую я пытаюсь избежать.

Ниже приведен фрагмент кода

Python Файл:

class MainScreen(Screen):
    pass
class SecondScreen(Screen):
    pass

class TestApp(App):
    ABS_OPACITY=BooleanProperty(True)           
    def test(self):
        print "Hello"
    def build(self):
        return presentation

Файл Kivy -

ScreenManagement:
    MainScreen: 
    SecondScreen:

<MainScreen>:
    name: "Main"
    FloatLayout:
        Button:
            font_size:12
            size_hint: 0.07, 0.05
            text: "AC"
            on_click:app.ABS_OPACITY=not app.ABS_OPACITY
            pos_hint: {"right":0.93,"left":0.30, "bottom":0.1, "top": 0.93}
        Image:
            source: "xyz/image.png"
            pos_hint:{"top":0.955}
            opacity:1 if app.ABS_OPACITY else 0
        Image:
            source: "abc/image.png"
            pos_hint:{"top":0.955}
            opacity:0 if app.ABS_OPACITY else 1

<SecondScreen>:
    name: "Second"
    FloatLayout:
        Button:
            font_size:12
            size_hint: 0.07, 0.05
            text: "AC"
            on_click:on_click:app.ABS_OPACITY=not app.ABS_OPACITY
            pos_hint: {"right":0.93,"left":0.30, "bottom":0.1, "top": 0.93}
        Image:
            source: "xyz/image"
            pos_hint:{"top":0.955}
            opacity:1 if app.ABS_OPACITY else 0
        Image:
            source: "abc/image.png"
            pos_hint:{"top":0.955}
            opacity:0 if app.ABS_OPACITY else 1

Выше приведена ошибка, с которой я сталкиваюсь, когда делаю то же самое.

1 Ответ

0 голосов
/ 26 апреля 2020

Эта ошибка типична для вызова Builder.load_file() для файла kv, который создает виджеты и ссылается на app до определения App. Попробуйте вызвать Builder.load_file() в build() методе App.

Другой способ исправить это - использовать правило <ScreenManagerment> в файле kv, а затем выполнить

return ScreenManagement()

в методе build().

...