Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >TypeError: object.__init__()在将Kivy应用程序迁移到2.0.0时只接受一个参数

TypeError: object.__init__()在将Kivy应用程序迁移到2.0.0时只接受一个参数
EN

Stack Overflow用户
提问于 2021-02-04 10:49:13
回答 1查看 56关注 0票数 0

有没有人能给点建议?

我有一个应用程序在Pi3/ArchLinuxArm/Kivy1.11上运行得很好。

我正在尝试将应用程序移动到Pi4/RasPiOS Lite (Buster)/Kivy2.0.0。现在,我动态生成按钮的一段代码失败了,错误代码是:

代码语言:javascript
运行
AI代码解释
复制
 Traceback (most recent call last):
   File "Main.py", line 57, in <module>
     main()
   File "Main.py", line 34, in main
     Display.Display()
   File "/home/automate/Display.py", line 657, in Display
     DisplayApp().run()
   File "/home/automate/.local/lib/python3.7/site-packages/kivy/app.py", line 949, in run
     self._run_prepare()
   File "/home/automate/.local/lib/python3.7/site-packages/kivy/app.py", line 919, in _run_prepare
     root = self.build()
   File "/home/automate/Display.py", line 649, in build
     sm.add_widget(ControlLightsScreen(name='c_lights'))
   File "/home/automate/Display.py", line 315, in __init__
     on_press = self.on_event
   File "/home/automate/.local/lib/python3.7/site-packages/kivy/uix/behaviors/button.py", line 121, in __init__
     super(ButtonBehavior, self).__init__(**kwargs)
   File "/home/automate/.local/lib/python3.7/site-packages/kivy/uix/label.py", line 318, in __init__
     super(Label, self).__init__(**kwargs)
   File "/home/automate/.local/lib/python3.7/site-packages/kivy/uix/widget.py", line 350, in __init__
     super(Widget, self).__init__(**kwargs)
   File "kivy/_event.pyx", line 245, in kivy._event.EventDispatcher.__init__
 TypeError: object.__init__() takes exactly one argument (the instance to initialize)

有问题的代码段是:

代码语言:javascript
运行
AI代码解释
复制
    for j in range(len(Lights.lights)):
        i = j
        button = Button(
                        text = Lights.lights[i][2], font_size = 24,
                        text_size = (160,60),
                        halign = 'center', valign = 'center',
                        size_hint_x = None, width = 188,
                        size_hint_y = None, height = 68,
                        id=str(i),
                        color = black,
                        background_normal = '',
                        background_color = grey,
                        on_press = self.on_event
                       )
        self.mylights.append([grey,button])
        grid.add_widget(button)

我尝试删除报告错误的行("on_press = self.on_event"),所有这些操作都是将报告的错误移到上面的行。注释掉整段代码后,应用程序就可以正常运行了。

类似的代码,动态生成标签仍然是完全有效的。

我做错了什么吗?还是在1.11.1和2.0.0之间有一些我需要考虑的变化?

启动诊断程序包括:

代码语言:javascript
运行
AI代码解释
复制
[INFO   ] [Logger      ] Record log in /home/automate/.kivy/logs/kivy_21-02-04_10.txt
[INFO   ] [Kivy        ] v2.0.0
[INFO   ] [Kivy        ] Installed at "/home/automate/.local/lib/python3.7/site-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.7.3 (default, Jul 25 2020, 13:03:44) 
[GCC 8.3.0]
[INFO   ] [Python      ] Interpreter at "/usr/bin/python"
[INFO   ] [Factory     ] 186 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] Backend used <sdl2>
[INFO   ] [GL          ] OpenGL version <b'OpenGL ES 3.1 Mesa 19.3.2'>
[INFO   ] [GL          ] OpenGL vendor <b'VMware, Inc.'>
[INFO   ] [GL          ] OpenGL renderer <b'llvmpipe (LLVM 9.0.1, 128 bits)'>
[INFO   ] [GL          ] OpenGL parsed version: 3, 1
[INFO   ] [GL          ] Shading version <b'OpenGL ES GLSL ES 3.10'>
[INFO   ] [GL          ] Texture max size <8192>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
EN

回答 1

Stack Overflow用户

发布于 2021-02-05 16:08:49

我被可靠地告知'id‘不是一个按钮属性,尽管在v2.0.0之前它的行为是这样的

当然,解决方案很简单。从按钮的已分配属性列表中删除id,但在按钮代码button.id = i调用的正下方添加新行。然后可以在on_event代码中引用obj.id:

代码语言:javascript
运行
AI代码解释
复制
    for j in range(len(Lights.lights)):
        i = j
        button = Button(
                        text = Lights.lights[i][2], font_size = 24,
                        text_size = (160,60),
                        halign = 'center', valign = 'center',
                        size_hint_x = None, width = 188,
                        size_hint_y = None, height = 68,
                        color = black,
                        background_normal = '',
                        background_color = grey,
                        on_press = self.on_event
                       )
        button.id = i
        self.mylights.append([grey,button])
        grid.add_widget(button)


def on_event(self, obj):
    myid = obj.id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66044110

复制
相关文章
SVG基础
SVG可缩放矢量图形Scalable Vector Graphics是基于可扩展标记语言XML,用于描述二维矢量图形的一种图形格式。SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式,SVG于2003年成为W3C推荐标准。
WindRunnerMax
2020/08/27
2.4K0
SVG图像技术摘要
该公司今天没有,研究了最近流行SVG技术,发现,随着css3不断流行,和浏览器技术的发展,SVG网站将取代大量的图片,成为主流站点图片展示。
全栈程序员站长
2022/07/06
1.3K0
SVG绘制星空效果
主要代码: 代码详见GitHub:https://github.com/toly1994328/svg-night: svg星空 <!DOCTYPE html> <html lang="en">
张风捷特烈
2018/09/26
1.4K0
SVG基础知识
之前有提到过SVG描边动画,可以实现很神奇的手写签名动画效果,当然,理论上可以用来实现任意不规则路径填充动画
ayqy贾杰
2019/06/12
2.1K0
一篇文章带你了解SVG 蒙版(Mask)
SVG蒙版功能可将蒙版应用于SVG形状。蒙版可确定SVG形状的哪些部分可见,以及具有什么透明度。运行效果可以将SVG蒙版视为剪切路径的更高级版本。
前端皮皮
2020/11/26
2K0
一篇文章带你了解SVG 蒙版(Mask)
SVG基础知识速查笔记
svg是指可缩放矢量图形,是用于描述二维矢量图形的一种图形格式。svg使用XML格式来定义图形,除ie8之前版本外,绝不部分浏览器均支持svg,可将svg文本直接嵌入HTML中显示。
前端_AWhile
2019/09/06
2K0
带你轻松打开svg滤镜的大门
本文介绍了SVG滤镜的用法,包括如何定义和使用滤镜、如何给不同的SVG元素添加滤镜、以及通过编程方式控制滤镜等。同时,还介绍了在网页中应用SVG滤镜的方法,包括使用SVG元素、使用CSS滤镜、以及使用JavaScript控制滤镜等。此外,还提供了若干示例和代码片段供参考。
练小习
2017/11/30
1.3K0
SVG绘图高斯模糊滤镜
运用SVG绘图实现一个模糊字体效果,比用CSS的阴影写出来的要好看的多。 实现效果如下: 实现代码如下: <!DOCTYPE html> <html> <head lang="en"> <me
越陌度阡
2020/11/26
6640
SVG绘图高斯模糊滤镜
一篇文章带你了解SVG 阴影
所有互联网的SVG滤镜定义在<defs>元素中。<defs>元素定义短并含有特殊元素(如滤镜)定义<filter>标签用来定义SVG滤镜。
前端进阶者
2021/03/03
9180
一篇文章带你了解SVG 阴影
三种方式:object、embed、mask引用 Svg 并更改样式
方式1:使用Object、embed标签引入 html <div class="item"> <object data="test.svg" type="image/svg+xml"></object> <embed src="test.svg" type="image/svg+xml" /> </div> 更改颜色,大小可通过css处理 .item { overflow: hidden; object,embed { cursor: pointer; filter: dro
White feathe
2022/04/21
1.2K0
带你轻松打开svg滤镜的大门
本文介绍了SVG滤镜的用法,包括模糊、失真、暗角、浮雕等效果,并通过实例进行演示。同时介绍了如何在DOME中自定义属性,以及常见的SVG图像的fallback方案。
练小习
2017/12/29
1.2K0
带你轻松打开svg滤镜的大门
css实现文字颜色渐变
background: -webkit-linear-gradient(…) 为文本元素提供渐变背景。 webkit-text-fill-color: transparent 使用透明颜色填充文本。 webkit-background-clip: text 用文本剪辑背景,用渐变背景作为颜色填充文本。
javascript.shop
2019/09/04
3.6K0
【开源游戏/网络游戏】勇士的战争!
图片演示: 代码摘要: HTML: <div id="preloadScreen" class="preload-screen external-screen"> <div class="cente
用户5997198
2019/12/19
1.6K0
SVG - 基本的SVG属性
SVG - 基本的SVG属性 HTML5学堂:在前一篇文章当中,我们讲解了SVG的基本知识,并且为大家介绍了如何在html文件当中书写SVG代码。今天我们具体讲解SVG的基本属性,如何使用SVG完成线、圆等图形的绘制。 line - 直线 拥有四中基本属性 x1 属性在 x 轴定义线条的开始 y1 属性在 y 轴定义线条的开始 x2 属性在 x 轴定义线条的结束 y2 属性在 y 轴定义线条的结束 demo <line x1 = "20" y1 = "20" x2 = "200" y2 = "180" st
HTML5学堂
2018/03/12
4.1K0
一篇文章带你了解SVG 渐变知识
渐变是一种从一种颜色到另一种颜色的平滑过渡。另外,可以把多个颜色的过渡应用到同一个元素上。
前端皮皮
2020/11/26
1.2K0
一篇文章带你了解SVG 渐变知识
mask
https://developer.mozilla.org/zh-CN/docs/Web/CSS/mask
阿超
2022/12/27
7040
mask
有意思!强大的 SVG 滤镜
想写一篇关于 SVG 滤镜的文章已久,SVG 滤镜的存在,让本来就非常强大的 CSS 如虎添翼。让仅仅使用 CSS/HTML/SVG 创作的效果更上一层楼。题图为袁川老师使用 SVG 滤镜实现的云彩效果 -- CodePen Demo -- Cloud (SVG filter + CSS)。
Sb_Coco
2021/03/30
1.7K0
有意思!强大的 SVG 滤镜
SVG快速入门小白篇
SVG .svg 使用xml语法 <?xml version='10.' standalone='no'> standalone 规定此SVG文件是否是独立的 或者是说含有外部文件的引用 在html中
起名字好难哟
2021/08/30
1.1K3
SVG快速入门小白篇
前端-SVG 实现动态模糊动画效果
今天我们将向大家展示如何制作SVG动态模糊效果,并将其应用于HTML元素的常规JS或CSS动画。
grain先森
2019/03/29
2.5K0
前端-SVG 实现动态模糊动画效果
SVG绘制渐变颜色文字
H5提供了很多有意思的新特性,工作中用的比较少,但是这仍然不能阻碍我们对它的兴趣,先给大家上个图,如果要用CSS来写这个效果,如何才能实现呢?
越陌度阡
2020/11/26
2.2K0
SVG绘制渐变颜色文字

相似问题

@KafkaListener只有在满足一定条件时才拉取新数据,如果条件不成立,则应停止拉取数据,直至满足条件为止

113

拉取某列中编号最小的行

43

仅当满足两个条件时才从SQL拉取

10

当某列中具有相同值的其他行满足条件时更新行

11

根据一定条件拉取ManytoOne

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档