Kivy - 按鈕大小



Kivy 應用的使用者介面上的元件必須具有適當的大小。與位置屬性一樣,按鈕(任何元件)的大小屬性也受其所在佈局的控制。

按鈕大小可以透過兩個屬性“size”和“size_hint”來配置。“kivy.uix.button.Button”類從 Widget 類繼承了這些屬性。

按鈕的“size_hint”屬性是一個值元組,其父佈局使用它來確定大小。它定義的是相對於佈局大小的相對大小,而不是絕對大小。例如:

btn.size_hint = (w, h)

引數“w”和“h”都指定為0到1範圍內的浮點數。例如,0.5代表50%,1代表100%。

# This button has width and height of the parent layout
btn.size_hint=(1,1)

# Width of this button will be half of the container's width
btn.size_hint=(0.5, 1)

# This button will be of width and height 20% of the layout
btn.size_hint=(.2,.2)

另一方面,“size”屬性以畫素為單位指定按鈕的絕對寬度和高度。

btn.size=(200,100)

但是,為了使按鈕具有絕對大小,必須要求 Kivy 佈局忽略大小提示。如果不想為寬度或高度使用 size_hint,則將其值設定為 None。換句話說,必須先設定“size_hint=(None, None)”才能以絕對測量單位分配大小。

還可以使用“size_hint_x”和“size_hint_y”屬性分別設定寬度或高度的大小提示。

假設想要建立一個寬度為 250 畫素,高度為父級高度 30% 的按鈕

btn.size_hint_x = None
btn.size_hint_y= 0.3
widget.width = 250

這些屬性也可以在 Button 建構函式引數中設定:

btn = Button(text="Hi there!", size_hint=(None, 0.3), width=250)

示例

下面的程式將各種按鈕放置在應用視窗的 FloatLayout 中,並使用 size_hint、size、pos_hint 和 pos 屬性的不同組合:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.core.window import Window

Window.size = (720,400)

class DemoApp(App):
   def build(self):
      f = FloatLayout()

      b1 = Button(text="B1", size_hint=(None, None))
      f.add_widget(b1)

      b2 = Button(text="B2", size_hint=(1, None), height=20)
      f.add_widget(b2)

      b3 = Button(text="B3", size_hint=(None, None), pos=(0, 100), size=(400, 100))
      f.add_widget(b3)
      b4 = Button(text='B4', size_hint=(None,.3), width=50, pos_hint={'x':.6, 'y':.2} )
      f.add_widget(b4)

      b5 = Button(text='B5', size_hint=(None,.9), width=50, pos_hint={'x':.5, 'y':.5} )
      f.add_widget(b5)
      return f

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

輸出

執行此程式碼後,將獲得以下輸出視窗:

Kivy Button Size
廣告