此代码位于Roberto Ulloa的 Kivy - Python中的交互式应用程序和游戏 - 第二版一书中。
#:kivy 1.9.0
<Subtitle@Label>:
bcolor: .1, .1, .1, 0
halign: 'center'
font_size: '20px'
size: self.texture_size[0]+20, self.texture_size[1]+20
y: 50
canvas.before:
Color:
rgba: self.bcolor
Rectangle:
pos: self.pos
size: self.size
Subtitle
文件中的班级subtitle.kv
来自Label
,用于在视频播放器中显示字幕(播放器项目是一个教程,其中包含了书。)
bcolor
用于video.py
中的Python代码,用于更改字幕的不透明度。
def display_subtitle(self, sub):
self.sub = sub
self.slabel.text = sub['content']
self.slabel.bcolor = .1, .1, .1, .8
最后两行更改了名为Subtitle
的{{1}}实例的属性。编写代码时,它不会运行。错误:
slabel
[WARNING] stderr: 11: Color:
[WARNING] stderr: >> 13: rgba: self.bcolor
[WARNING] stderr: 14:
[WARNING] stderr: 15: Rectangle:
[WARNING] stderr: ...
[WARNING] stderr: TypeError: 'NoneType' object is not iterable
等于self.bcolor
的原因是什么?
Python 3.6.1 - Kivy 1.10.0 - Windows 7(64位)
答案 0 :(得分:0)
花了一些时间才找到解决方案(这是学习Kivy的书),所以如果你拼命搜索,你可能会喜欢这篇文章...
df1=df[['X','Y']].apply(sorted,1)
df.groupby([df1.X,df1.Y])['count'].sum().reset_index(name='count')
Out[400]:
X Y count
0 A B 3
1 C D 8
必须是Kivy属性,这可以在Python代码中完成。由于没有与kv文件关联的py文件,因此可以在bcolor
中使用Subtitle
的地方完成。必须使用Python语法声明该类。我将基类声明从kv移到py(所以我从kv文件中的video.py
删除了@Label
并将其添加到<Subtitle@Label>
中:
video.py
并且有效: