【问题标题】:Kivy - Error while trying to use my.kv fileKivy - 尝试使用 my.kv 文件时出错
【发布时间】:2021-04-10 06:10:49
【问题描述】:

我刚开始学习kivy,运行这段代码时无法得到黑窗,这是一个错误:

Kivy 文件需要 #:kivy !ex

这是我的代码 sn-p:

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()        

我的 my.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()

【问题讨论】:

    标签: python visual-studio-code kivy


    【解决方案1】:

    我使用 Builder.load_string() 并将我的 .kv 代码粘贴到其中,这样就可以了

    【讨论】:

      【解决方案2】:

      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()  
      

      我的.kv


      <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()
      

      【讨论】:

      • 还是没有运行,出现黑屏
      【解决方案3】:

      我刚刚添加了带有#:kivy 1.0.9的kivy版本

      【讨论】:

        猜你喜欢
        • 2021-10-05
        • 2019-09-13
        • 2017-08-27
        • 2019-08-31
        • 2017-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多