删除 Kivy 应用 python 中小部件之间的 space
Remove space between widgets in Kivy app python
我制作了这个小 Kivy python 应用程序:
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.core.window import Window
class TestApp(App):
def build(self):
self.local = "Test message"
# build window
self.window = GridLayout()
self.window.cols = 1
self.window.size_hint = (0.7, 0.9)
self.window.pos_hint = {"center_x": 0.5, "center_y":0.5}
# icon
self.window.add_widget(Image(source="captus.png"))
# label
self.charlbl = Label(text=self.local, color=(0, 0, 0, 1))
self.window.add_widget(self.charlbl)
# background color
Window.clearcolor = (1, 1, 1, 1)
return self.window
if __name__ == "__main__":
TestApp().run()
我正在尝试创建一个包含图像、文本和滑块按钮的基本应用程序。
我在这里面临的问题是小部件有很大的分离:
如何删除两个小部件之间的空白 space?
编辑:
我在测试答案时做了一些更改:
.py 文件:
class MyWidget(GridLayout):
def __init__(self, **kwargs):
super(MyWidget, self).__init__(**kwargs)
class PhoneApp(App):
def build(self):
return MyWidget()
if __name__ == "__main__":
PhoneApp().run()
.kv 文件:
#:kivy 1.0.9
<MyWidget>:
GridLayout:
cols: 1
Image:
source: "captus.png"
Label:
text: "Test msg"
color: 0, 0, 0, 1
size_hint_y: None
height: self.texture_size[1]
“space”实际上是Label
的大小。如果没有其他约束,GridLayout
将其 space 平均分配给 children,因此,在您的情况下,Label
与 space 相同Image
。如果 children 中的任何一个明确设置了大小,那么那些 children 将获得它们的设置大小,其余 children 共享剩余的 space。因此,如果您将 Label
的大小设置为更小的值,那么“space”将显得更小。最简单的方法是使用 kivy 语言。这是您的代码的修改版本:
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
kv = '''
GridLayout:
cols: 1
size_hint: (0.7, 0.9)
pos_hint: {"center_x": 0.5, "center_y": 0.5}
Image:
source: 'captus.png'
Label:
text: app.local
color: 0, 0, 0, 1
size_hint_y: None
height: self.texture_size[1]
'''
class TestApp(App):
def build(self):
self.local = "Test message"
# background color
Window.clearcolor = (1, 1, 1, 1)
return Builder.load_string(kv)
if __name__ == "__main__":
TestApp().run()
我制作了这个小 Kivy python 应用程序:
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.core.window import Window
class TestApp(App):
def build(self):
self.local = "Test message"
# build window
self.window = GridLayout()
self.window.cols = 1
self.window.size_hint = (0.7, 0.9)
self.window.pos_hint = {"center_x": 0.5, "center_y":0.5}
# icon
self.window.add_widget(Image(source="captus.png"))
# label
self.charlbl = Label(text=self.local, color=(0, 0, 0, 1))
self.window.add_widget(self.charlbl)
# background color
Window.clearcolor = (1, 1, 1, 1)
return self.window
if __name__ == "__main__":
TestApp().run()
我正在尝试创建一个包含图像、文本和滑块按钮的基本应用程序。
我在这里面临的问题是小部件有很大的分离:
如何删除两个小部件之间的空白 space?
编辑:
我在测试答案时做了一些更改:
.py 文件:
class MyWidget(GridLayout):
def __init__(self, **kwargs):
super(MyWidget, self).__init__(**kwargs)
class PhoneApp(App):
def build(self):
return MyWidget()
if __name__ == "__main__":
PhoneApp().run()
.kv 文件:
#:kivy 1.0.9
<MyWidget>:
GridLayout:
cols: 1
Image:
source: "captus.png"
Label:
text: "Test msg"
color: 0, 0, 0, 1
size_hint_y: None
height: self.texture_size[1]
“space”实际上是Label
的大小。如果没有其他约束,GridLayout
将其 space 平均分配给 children,因此,在您的情况下,Label
与 space 相同Image
。如果 children 中的任何一个明确设置了大小,那么那些 children 将获得它们的设置大小,其余 children 共享剩余的 space。因此,如果您将 Label
的大小设置为更小的值,那么“space”将显得更小。最简单的方法是使用 kivy 语言。这是您的代码的修改版本:
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
kv = '''
GridLayout:
cols: 1
size_hint: (0.7, 0.9)
pos_hint: {"center_x": 0.5, "center_y": 0.5}
Image:
source: 'captus.png'
Label:
text: app.local
color: 0, 0, 0, 1
size_hint_y: None
height: self.texture_size[1]
'''
class TestApp(App):
def build(self):
self.local = "Test message"
# background color
Window.clearcolor = (1, 1, 1, 1)
return Builder.load_string(kv)
if __name__ == "__main__":
TestApp().run()