GridLayout 定位错误
GridLayout wrong positioning
我有我的简单 python 代码:
import kivy
kivy.require('1.11.1')
from kivy.app import App
from kivy.config import Config
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
Builder.load_file('Matrixkivy.kv')
class MyLayout(Widget):
pass
class MatrixCalc(App):
def build(self):
return MyLayout()
if __name__ == '__main__':
MatrixCalc().run()
以及简单的 .kv 代码:
<MyLayout>
GridLayout:
size_hint: root.width, root.height
Button:
text: "Button1"
Button:
text: "Button2"
我想要一个 GridLayout,它的大小与整个应用程序一样大,还有两个按钮,它们都占据了它的一半。但是,应用程序会在左下角显示应用程序包含的所有内容。如何解决?
主要问题是您使用基础 Widget
class 作为容器。你可以这样做,但是 Layout
classes 已经有了处理 size_hint
和 pos_hint
之类的代码。您的代码的一种修复方法是替换:
class MyLayout(Widget):
pass
与:
class MyLayout(FloatLayout):
pass
您还应该删除以下行:
size_hint: root.width, root.height
Size_hint
值通常应该是 0-1
范围内的数字。并为 GridLayout
添加定义 rows
或 cols
的行,因此您的 kv
看起来像:
<MyLayout>
GridLayout:
cols: 1
Button:
text: "Button1"
Button:
text: "Button2"
因为你正在使用 GridLayout
作为 MyLayout
的子级,你可以让 MyLayout
扩展 GridLayout
,然后你可以消除 GridLayout
行来自你的 kv
。使用这种方法,您的 MyLayout
class 将如下所示:
class MyLayout(GridLayout):
pass
和对应的kv
:
<MyLayout>
cols: 1
Button:
text: "Button1"
Button:
text: "Button2"
我有我的简单 python 代码:
import kivy
kivy.require('1.11.1')
from kivy.app import App
from kivy.config import Config
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
Builder.load_file('Matrixkivy.kv')
class MyLayout(Widget):
pass
class MatrixCalc(App):
def build(self):
return MyLayout()
if __name__ == '__main__':
MatrixCalc().run()
以及简单的 .kv 代码:
<MyLayout>
GridLayout:
size_hint: root.width, root.height
Button:
text: "Button1"
Button:
text: "Button2"
我想要一个 GridLayout,它的大小与整个应用程序一样大,还有两个按钮,它们都占据了它的一半。但是,应用程序会在左下角显示应用程序包含的所有内容。如何解决?
主要问题是您使用基础 Widget
class 作为容器。你可以这样做,但是 Layout
classes 已经有了处理 size_hint
和 pos_hint
之类的代码。您的代码的一种修复方法是替换:
class MyLayout(Widget):
pass
与:
class MyLayout(FloatLayout):
pass
您还应该删除以下行:
size_hint: root.width, root.height
Size_hint
值通常应该是 0-1
范围内的数字。并为 GridLayout
添加定义 rows
或 cols
的行,因此您的 kv
看起来像:
<MyLayout>
GridLayout:
cols: 1
Button:
text: "Button1"
Button:
text: "Button2"
因为你正在使用 GridLayout
作为 MyLayout
的子级,你可以让 MyLayout
扩展 GridLayout
,然后你可以消除 GridLayout
行来自你的 kv
。使用这种方法,您的 MyLayout
class 将如下所示:
class MyLayout(GridLayout):
pass
和对应的kv
:
<MyLayout>
cols: 1
Button:
text: "Button1"
Button:
text: "Button2"