尝试将 Python 变量放入 Kivy 时出错 (Python)

Error When Trying to get Python Variable into Kivy (Python)

提问人:Samk 提问时间:7/25/2023 最后编辑:Samk 更新时间:7/25/2023 访问量:19

问:

我目前正在尝试将一个 python 变量(称为 prior)放入 kivy 并在我这样做时动态更改标签的文本。我还是 kivy 的新手,我不确定为什么会出现此错误 kivy.lang.parser.ParserException:解析器:文件“/Users/sam/Downloads/App/answer.kv”,第 35 行:

...
     33:                color: 0,1,0,1
     34:                font_size: 75
>>   35:            if app.prior == "yes":
     36:                print("Hello")
     37:                text: "Correct"
...
Invalid class name

这是我目前拥有的 蟒:

import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.lang import Builder 
from kivy.uix.image import Image
import random
import os
from kivy.core.window import Window
import numpy as np
from kivy.properties import StringProperty
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput

class MyLayout(Widget):
    pass    

        

            
        
        
        

class RootLayout(FloatLayout):
    pass

        

    

class colorApp(App):


    flagfile = StringProperty("0")
    
    path = "/Users/sam/Downloads/App/w320"
    files = os.listdir(path)
    flagfile= path + "/" + random.choice(files)
    
    prior = StringProperty()
    def button_press(self):
        self.prior = self.root.ids.user_input.text
        return RootLayout()

        
        

    def build(self):
 

        return RootLayout()



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

基维

<RootLayout>
    MyLayout:  
        BoxLayout:
                   
        
            orientation: "vertical"
            size: root.width, root.height

            padding: 50
            spacing: 20
            Image:
                id: cardimage
                #source: app.flagfile
                source: "w320/in.png"
            
            TextInput:
                multiline: False
                text: "Enter Guess Here"
                on_focus: self.text = "" if args[1] else self.text
                id: user_input
                
            Button:
                text: "Submit"
                font_size: 32
                on_press: app.button_press()
            
        
        
        FloatLayout:    
            Label:
                text:''
                pos: 1200, 910
                color: 0,1,0,1
                font_size: 75
            if app.prior == "yes":
                print("Hello")
                text: "Correct"
                
                

python-3.x 变量 kivy 语言

评论


答:

0赞 John Anderson 7/25/2023 #1

在 your 中,该行的取消缩进使 kivy 解析器期望实例的新子项。当该行被解释为类时,您会看到该错误。由于您正在尝试设置 的属性,因此应在属性定义中使用该逻辑。这是执行此操作的一种方法:kvif app.prior == "yes":FloatLayouttextLabeltext

        Label:
            pos: 1200, 910
            color: 0,1,0,1
            font_size: 75
            text: "Correct" if app.prior == "yes" else ''