kivy项目问题汇总

1,self与root有什么区别?

self是用来代指对象实例本身的,root是用来代指根对象的。交互部件的参数用self,交互窗口的参数用root。

self代指对象实例本身,通常有如下几种情况。

self

  • a,在py文件中继承部件类的self,代指当前对象的实例,示例如下。此self是部件中的根部件,可以访问部件内的所有部件,实现获取或设置Label标签的属性,等类似的操作。
class PongGame(Widget):
 
    def update(self, dt):
        # 调用球的移动等操作
        pass
 
  • b,在kv文件中部件事件属性的self,代指当前对象的实例,示例如下。此self代指Button部件本身,用于将本部件的参数传给函数,这样就可以在函数里面来实现与本部件的交互。至于为什么要在press_button(self)函数前面加root是因为程序并不知道这个函数是全局函数还是局部函数,所以添加root是为了告诉程序我所调用的这个函数是在继承布局类下。
<ButtonFloatLayout>:
	Button:
		text:'Button'
		size_hint:.2,.15
		pos_hint:{'center_x':.5,'center_y':.5}
		background_normal:''
		background_color:[.1,.5,.5,1]
        #按下按钮时触发事件
		on_press:root.press_button(self)
        #按下按钮并释放时,触发该事件
		on_release:root.release_button(self)

 root

root是用来代指根对象的,可以理解为窗口,通常有如下几种用途:

  • a,在继承部件类中,可以用 self.add_widget(部件变量),将部件添加到布局
class BoxLayoutWidget(BoxLayout):
    def __init__(self,**kwargs):
        super().__init__(**kwargs)
        
        #指定属性
        bt = Button(text='Button 01')
        #添加到布局中
        self.add_widget(bt)
  • b,在kv文件中,可以用来设置属性相对于根对象的宽高等

Label:
   font_size: 70  
   center_x: root.width / 4
   top: root.top - 50
   text: "0"

总体来说:

self 是指当前对象实例,用于访问和操作对象的属性和方法。

root 是指界面的根对象,用于访问或操作根对象下的其他子组件。

注意:canvas画布不属于部件,在canvas里面写self代指的是所写canvas的部件

2,格式化字符串的几种方法,f?%?

当变量遇到字符串,会参数什么火花嘞?

普通的如下,但是遇到相对复杂的相加过于繁琐。所以我们采用其他易读性相对舒服的格式化代码的方式。这里的格式化代码可以理解为“在字符串中插入表达式或变量的值以便生成一个新的字符串”,和文本编辑器中的格式化代码的缩进还是有点区别的。

name='夕星'
print("你好呀,我的名字叫做"+name)

f-strings

f-strings这是Python 3.6及更高版本引入的一种字符串格式化方法。你可以在字符串前加上字母"f",然后在字符串中使用大括号 {} 来插入变量或表达式的值。

name = "夕星"
age = 30
print(f"{name} 今年 {age} 岁了.")

str.format()

str.format() 这是一种较早的字符串格式化方法,在Python 2.6及更高版本中都可以使用。你可以在字符串中使用大括号 {},然后调用 format() 方法并传入相应的参数。

name = "夕星"
age = 30
print("{} 今年 {} 岁.".format(name, age))

% 操作符

% 操作符这是一种较早的字符串格式化方法,在Python的所有版本中都可用。你可以使用 % 操作符,然后在字符串中使用格式化说明符 %s(字符串)、%d(整数)、%f(浮点数)等,然后将要插入的值作为操作符右侧的元组。

name = "夕星"
age = 30
print("%s 今年 %d 岁了." % (name, age))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值