簡體   English   中英

刪除 Kivy 應用程序 python 中小部件之間的空間

[英]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()

我正在嘗試創建一個基本的應用程序,它將有一個圖像、一個文本和一個 slider 按鈕。

我在這里面臨的問題是小部件有很大的分離:

在此處輸入圖像描述

如何刪除兩個小部件之間的空白區域?

編輯:

在得到我正在測試的答案時,我做了一些更改:

.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]

“空間”實際上是Label的大小。 如果沒有其他限制, GridLayout會將其空間平均分配給它的子級,因此,在您的情況下, Label獲得與Image相同的空間。 如果任何孩子明確設置了大小,那么這些孩子將獲得他們設置的大小,並且 rest 個孩子共享剩余空間。 因此,如果您將Label的大小設置為更小的值,那么該“空間”將顯得更小。 最簡單的方法是使用 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM