16
A
回答
20
這是一個棘手的問題。據我所知,Widgets
總是矩形。但是,我們可以使用background_normal
和background_down
屬性分別更改背景併爲正常狀態和向下狀態放置幾幅圖像。您還需要了解border
屬性。
使用這兩個圖像normal.png
和down.png
,您可以開始添加圓形邊框。
下面是一段代碼,這是非常簡單的(我試着解釋下面的border
屬性):
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.lang import Builder
Builder.load_string("""
<Base>:
Button:
background_normal: 'normal.png'
background_down: 'down.png'
border: 30,30,30,30
""")
class Base(FloatLayout):
pass
class ButtonsApp(App):
def build(self):
return Base()
if __name__ == "__main__":
ButtonsApp().run()
我明白這個問題的方法(和我可能是錯了)是這樣的。 border: 30,30,30,30
中的值表示頂部,右側,底部和左側將有多少像素用於背景按鈕的邊框。其餘的部分將被填滿中間部分。我不確定。順便說一句,如果你想看到一些很酷的東西,例如見border: 150,150,150,150
。原因是我們正在拾取比實際圖像更大的邊框。
警告:小工具仍然是矩形。這意味着即使您點擊圓角,按鈕仍然會收到該事件。我想這是一個公平的價格。如果你想做更好的事情,也許我可以幫助你,但我們需要用一些數學來衝突。文檔中Pong Game tutorial的技巧之一就是實際上球是方形的。我發佈了一個相關的問題here,但您需要使用Canvas
1
如果您只是爲了看起來好看,而且對邊角沒有挑剔,雖然是圓的,仍然是接觸點,您可以簡單地做,如在本示例程序中所示(這具有大的半徑對於本示例):
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.base import runTouchApp
kv="""
<[email protected]>:
background_color: 0,0,0,0 # the last zero is the critical on, make invisible
canvas.before:
Color:
rgba: (.4,.4,.4,1) if self.state=='normal' else (0,.7,.7,1) # visual feedback of press
RoundedRectangle:
pos: self.pos
size: self.size
radius: [50,]
"""
class RoundedButton(Button):
pass
Builder.load_string(kv)
runTouchApp(RoundedButton(text="Hit Me!"))
相關問題
- 1. 按鈕角落圓角背景圖片
- 2. 按鈕的圓角
- 3. 圓桌角落
- 4. 圓角滑塊角落ios
- 5. 圓角按鈕ASP.NET
- 6. 在角落裏的按鈕?
- 7. 屏幕角落的按鈕
- 8. Kivy將按鈕放在佈局的角落
- 9. CSS3倒圓角落
- 10. Flex中按鈕的圓形特定角落
- 11. UIImage的按鈕圓角
- 12. 圓角圖像只有某些角落與calayer的角落Radius
- 13. iPhone - 鍵盤角落按鈕
- 14. Android的圓角矩形彩色角落
- 15. UINavigationBar圓角的兩個角落
- 16. 僅限於角落的圓角陰影
- 17. CSS圓角表的角落 - 問題
- 18. 圖像圓角按鈕JavaFX
- 19. 圓角按鈕爲IE8
- 20. 圓角按鈕陣列
- 21. 按鈕組上的圓角落下丟失
- 22. 如何使一個按鈕的角落圓?
- 23. Android:不改變背景顏色的圓形按鈕角落
- 24. NSBezierPath圓角矩形有壞角落
- 25. CSS圓角表角落,漸變背景
- 26. WPF中的圓角平面按鈕
- 27. box2d圓體卡在角落
- 28. 如何圓QWidget角落
- 29. CoreGraphics圓形角落厚度
- 30. Android:按鈕 - 交換圓角角落API 8至12 - 如何解決它?
定製碰撞有在https://github.com/kivy/kivy/blob/master/examples/widgets一個例子/customcollide.py。按鈕使用邊框圖像顯示其具有邊框屬性的圖像。此邊框圖像在功能上與CSS BorderImage非常相似。你可能會從這裏得到一個好主意http://css-tricks.com/understanding-border-image/ –