【问题标题】:Renders in python but not in kivy language在 python 中呈现,但不是在 kivy 语言中呈现
【发布时间】:2013-12-19 07:56:06
【问题描述】:

这段代码:

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput


class LoginScreen(GridLayout):

 def __init__(self, **kwargs):
     super(LoginScreen, self).__init__(**kwargs)
     self.cols = 2
     self.add_widget(Label(text='User Name'))
     self.username = TextInput(multiline=False)
     self.add_widget(self.username)
     self.add_widget(Label(text='password'))
     self.password = TextInput(password=True, multiline=False)
     self.add_widget(self.password)


class MyApp(App):

 def build(self):
     return LoginScreen()


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

按预期工作并生成此窗口(窗口大小有所调整):


但是在kivy language 中实现同样的例子时却失败了:

Python 文件:

from kivy.app import App
from kivy.uix.gridlayout import GridLayout

class LoginScreen(GridLayout):
    pass

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

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

my.kv 文件:

#:kivy 1.0

<LoginScreen>:
    GridLayout:
        cols: 2
        Label:
            text: "Username"
        TextInput:
            multiline: False

        Label:
            text: "Password"
        TextInput:
            multiline: False

产生(再次调整大小)

为什么会这样,我该如何解决?

【问题讨论】:

标签: python python-2.7 kivy


【解决方案1】:

您不需要在 kivy 文件中创建 GridLayout

my.kv 文件中删除GridLayout:,如下所示:

#:kivy 1.0

<LoginScreen>:
    cols: 2
    Label:
        text: "Username"
    TextInput:
        multiline: False

    Label:
        text: "Password"
    TextInput:
        multiline: False

否则会在 LoginScreen 中创建另一个 GridLayout。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
  • 2019-08-01
  • 2012-12-19
  • 1970-01-01
  • 2020-02-22
  • 1970-01-01
相关资源
最近更新 更多