tot*_*ico 24
这是一个棘手的问题.据我所关注的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()
Run Code Online (Sandbox Code Playgroud)
我理解这一点的方式(我可能错了)就是这样.值in border: 30,30,30,30表示顶部,右侧,底部和左侧的像素将用于背景按钮的边框.剩下的就是中间部分.我不确定.顺便说一句,如果你想看到一些很酷的东西,请参阅border: 150,150,150,150.原因是我们正在拾取比实际图像更大的边界.
警告:小部件仍然是矩形.这意味着即使您单击圆角,该按钮仍会收到该事件.我想这是一个合理的价格.如果你想做更好的事情,也许我可以帮助你,但我们需要用一些数学来碰撞积分.文档中Pong Game教程的一个技巧是实际上球是一个正方形.我在这里发布了一个相关的问题,但你需要使用Canvas
如果您只是在寻找好看的外观,并且对拐角处的部分虽然变圆,但仍然不挑剔,但仍然可以触摸它们,则可以简单地做到这一点,如本示例程序所示(此示例的半径较大):
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.base import runTouchApp
kv="""
<RoundedButton@Button>:
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!"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14056 次 |
| 最近记录: |