第一个问题:

设置好按钮事件on_press,但是在加载类a的时候直接执行啦,代码如下:

class a()def choosebtn2(self,ss):print('choosebut2')but2 = Button(text='速算', on_press=self.choosebtn2('ss'))

原因:on_press要的是一个函数地址,但是self.choosebtn2(‘ss’) 表达式是一个函数并且求其值的运行代码,应该改为:self.choosebtn2。

第二个问题:

设置的on_press事件中choosebtn2函数没有按要求得到传入的参数,将会导致choosebtn2()运行有误。

解决:

class a()def choosebtn2(self,ss):print('choosebut2')but2 = Button(text='速算', on_press=lambda: self.choosebtn2('ss'))

第三个问题

这样设置的on_press事件中choosebtn2的参数个数还是不对。

报错:a..() takes 0 positional arguments but 1 was given

解决:只好采用不用参数试验代码:

class a()def choosebtn2(self):print('choosebut2')but2 = Button(text='速算', on_press=self.choosebtn2)

第四个问题:

设置的on_press事件中choosebtn2()明明只有self一个参数,我主动的带入更是一个没有,可是系统却显示有两个参数给予。

报错:a.choosebtn2() takes 1 positional argument but 2 were given

解决:更该choosebtn2的构造接收参数,最后研究这个参数实际上是个按钮,就是你点击的按钮。代码如下:

class a()def choosebtn2(self,button):print('choosebut2',button)but2 = Button(text='速算', on_press=self.choosebtn2)

顺利完成未再有错误
找到问题后,反过头来再解决第三个问题,再给lambda 一个参数,即button,然后使用他们,代码如下:

class a()def choosebtn2(self,button,ss):print('choosebut2',button)but2 = Button(text='速算', on_press=lambda  button: self.choosebtn2(button,'ss'))

这样可以实现:button中on_press,on_release等事件的代码设置,并且能够传递参数进去。

第五个问题

最新发现的,在用lambda 设置带参数的onpress时,如果传入的参数是用变量/表达式表达的,会出现执行时程序只是获取变量/表达式的最新值,而不是过程值。问题代码如下:

on_press=lambda button: self.btn_choose(button, name)

name是个变量,而且本语句用在循环中,多次使用,name值一直在变化,最终结果是在循环设置的全部on_press属性中name取值为最新的一个值,而不是过程值。

解决问题:需要更改为如下的表达方式:

on_press=lambda button, x=name: self.btn_choose(button, x)

这样在计算lambda 函数时 x即取得了当时的name值,然后再赋值给btn_choose函数当参数,问题解决。

建立控件后添加属性

如果你在建完控件后再去设置这类属性是可以使用如下代码:

btn2.bind(on_press=self.choosebtn2)

再结合以上问题的处理方法,灵活运用

kivy中on_press,on_release事件用代码设置函数的问题相关推荐

  1. VSCode中使用Git忽略提交代码设置

    转载自:VSCode中使用Git忽略提交代码设置_winsomeWin的博客-CSDN博客 在VSCode中使用Git的时候如何忽略某些文件. 文件-> 首选项->设置:扩展–>Gi ...

  2. html内置时间对象,JavaScript中的常用事件,以及内置对象详解

    原标题:JavaScript中的常用事件,以及内置对象详解 今天是刘小爱自学Java的第81天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 学前端有一个非常权威的组织,也就是w3c,其有个专 ...

  3. 【转】C# 中的委托和事件

    阅读目录 C# 中的委托和事件 引言 将方法作为方法的参数 将方法绑定到委托 事件的由来 事件和委托的编译代码 委托.事件与Observer设计模式 .Net Framework中的委托与事件 总结 ...

  4. Unity代码设置天空盒子skybox 及定时切换

    目录: 一.代码 二.解析 三.核心 前言:并非自创,看的是同行的博文--在此向前人致谢 一.代码 using System.Collections; using System.Collections ...

  5. Datagridview代码设置选中行后,没有触发SelectionChanged事件

    不知道大家有没有遇到过这个问题,在winform开发软件的过程中,使用Datagridview代码设置选中行后,没有触发SelectionChanged事件,但是通过界面点击单元格或者选中行却是可以触 ...

  6. html如何设置滑轮效果,HTML中鼠标滚轮事件onmousewheel处理

    滚轮事件是不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件 ...

  7. java事件绑定,Java编程GUI中的事件绑定代码示例

    程序绑定的概念: 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来.对java来说,绑定分为静态绑定和动态绑定:或者叫做前期绑定和后期绑定 静态绑定: 在程序执行前方法已经被绑定,此时由编译 ...

  8. 介绍一种在Xcode中删除一整行代码的快捷键设置,

    介绍一种在Xcode中删除一整行代码的快捷键设置, 注:这里说的一整行不是你从行末尾按下 ⌘ + ⌫,而是说在行任何位置都可以删除. 在/Applications/Xcode.app/Contents ...

  9. DialogFragment中通过dataBinding绑定View,设置点击事件无效,通过getWindow设置dialog位置和大小无效。

    1.问题描述:DialogFragment中通过dataBinding绑定View,设置点击事件无效. private val binding: CoreDialogEditContentBindin ...

最新文章

  1. Datawhale组队学习周报(第040周)
  2. Memory and Crow
  3. 转:Chrome渲染分析之Timeline工具的使用
  4. 2020年9月26日-02-软件工程-工程化思维+瀑布模型+敏捷开发
  5. 如何用绩效考核搞垮一个团队?
  6. gini系数 决策树_SKlearn中分类决策树的重要参数详解
  7. error: #error regenerate this file with a newer version of protoc.
  8. 两种获取python版本的方法
  9. 致敬Github那些卓越贡献的大佬和他们的公众号
  10. 揭秘 IFTTT 每天处理几十亿事件数据的基础结构
  11. Windows Neptune的安装
  12. 2019年下半年软件设计师上午真题及答案解析
  13. NAT映射和代理服务器
  14. xml 解析库 msxml6.dll
  15. 红米k50 刷入类原生教程
  16. CSP 201903-5 317号子任务 暴力30分+优化100分
  17. 数据结构例9.编写一个算法,将带头结点的单向链表 拆分成一个奇数链表和一个偶数链表,并分别输出
  18. 怎么从安卓设备转移数据到苹果_如何将数据从安卓手机转移到苹果手机
  19. Python可视化 | Seaborn02
  20. ThinkPHP6四维数组添加以及修改完美封装

热门文章

  1. 计算机连接无线网络的步骤,笔记本怎么连接wifi超详细教程
  2. Centos7配置网络
  3. MaxEnt生态位模型课程大纲
  4. winbugs MATLAB,winbugs问题求教:
  5. LeetCode笔记:Biweekly Contest 56(补发)
  6. U盘、移动硬盘;固态硬盘、机械硬盘
  7. P3437 [POI2006]TET-Tetris 3D
  8. c语言atm程序个人总结,C语言程序设计报告(模拟ATM取款机)
  9. vue+elementUi在点js.js文件中使用Message消息提示、Notification、MessageBox、succes、import、from
  10. HTTP (RESTful) API 响应时间分析及SLA定义