尝试使用my.kv文件时发生Kivy错误

2024-05-29 01:41:17 发布

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

我刚刚开始学习kivy,当我运行这段代码时,我无法得到一个黑色窗口

这是我的代码片段:

gui_python.py

from kivy.app import App
from kivy.uix.label import Label   
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty

class MyGridLayout(Widget):


     name = ObjectProperty(None)
     userId = ObjectProperty(None)
   


     def press(self):
        name = self.name.text
        userId = self.id.text

        # print(f'hello {name} , your id {id}')
     #    self.add_widget(Label(text = f'name : {name} , id : {id}'))
        self.name.text = ""
        self.id.text = ""

class MyApp(App):
    def build(self):
        return MyGridLayout()

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

我的.kv文件是:

<MyGridLayout>

    name:name
    userId:userId

    GridLayout:
        cols:1
        size: root.width , root.height
        GridLayout:
            cols:2

            Label:
                text: "user Name"
            TextInput:
                id :Name
                multiline:False    

            Label:
                text: "user id"
            TextInput:
                id:userId
                multiline:False 


        Button:
            text: "Submit"
            font_size: 32
            on_press: root.press()

这是一个错误: Kivy文件需要#:Kivy!ex

任何修复或帮助,以使这是发生将不胜感激。非常感谢。 enter image description here


Tags: textnamefromimportselfidtextinputlabel
2条回答

我使用Builder.load_string()并在其中粘贴.kv代码,这就是工作

gui_python.py


from kivy.app import App
from kivy.uix.label import Label   
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty

class MyGridLayout(Widget):
     name = ObjectProperty(None)
     userId = ObjectProperty(None)
     def press(self):
          name = self.name.text
          userId = self.userId.text # error fixed
          print(f'hello {name} , your id {userId}') # error fixed
          self.add_widget(Label(text = f'name : {name} , id : {userId}')) # error fixed
          self.name.text = ""
          self.userId.text = "" # error fixed

class My1App(App):
     def build(self):
          return MyGridLayout()

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

我的千伏


<MyGridLayout>:
    name:name
    userId:userId
    GridLayout:
        cols:1
        size: root.width , root.height
        GridLayout:
            cols:2
            Label:
                text: "user Name"
            TextInput:
                id :name # error fixed
                multiline:False
            Label:
                text: "user id"
            TextInput:
                id:userId
                multiline:False
        Button:
            text: "Submit"
            font_size: 32
            on_press: root.press()

相关问题 更多 >

    热门问题