kivy第二辑

自定义小部件

通过导入widget来构建小部件

main.py文件:

import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button


class MyButton(Button):
    pass


class MyWidget(Widget):
    pass


class MyApp(App):
    def build(self):
        return MyWidget()


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


对应的my.kv文件:

<MyButton>:
     color:.7,.6,.4,.1
     size:120,40
<MyWidget>:
     TextInput:
          hint_text: 'Type something here'
          size:50,50
          pos:root.x+20,root.top-self.height-20
     MyButton:
          text: 'Press here'
          pos:root.x+20,root.y+20
     MyButton:
          text: 'Press me'
          pos:root.right-self.width-20,root.y+

对于如上所示的 button小部件,具有相似的属性,可以通过<MyButton>进行统一定义,可以省去很多麻烦,如果你觉得它不够“靓”,可以通过color进行调整。

pos可以实现对小部件位置的定义,而程序运行出的黑框是最左侧为x轴,下面为y轴,左下角为原点,而root和self可以实现对部件位置很好的把控,如图:

 FloatLayout浮动布局

 由pos_hint、size_hint进行布局:

size_hint: .5, .5此处.5表示百分之五十,即水平方向和垂直方向均占半分之五十

当x值等于1时,将填满水平方向

而size_hint: 1,1 可以填满整个窗口

对于pos_hint:

x属性------->代表左边框的位置

同理,描述右边框位置的 right属性和描述部件中心水平位置的center_x作用一致:

 而垂直定位和水平的一样:

 双向定位

 话不多说,先上代码:

#file name:main.py

import kivy
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout


class MyButton(Button):
    pass


class MyFloat(FloatLayout):
    pass


class MyApp(App):
    def build(self):
        return MyFloat()


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

 kv文件:

#file name:my.kv

<MyButton>:
     size_hint:.1,.1
<MyFloat>:

     MyButton:
          text: 'Press here one'
          pos_hint:{'x':.5,'y':.6}

     MyButton:
          text: 'Press me two'
          pos_hint:{'x':.5, 'y': .2}

 通过对水平方向和垂直方向的组合,运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值