首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >自定义小部件触发另一个自定义小部件的on_touch_down事件

自定义小部件触发另一个自定义小部件的on_touch_down事件
EN

Stack Overflow用户
提问于 2018-08-16 08:03:16
回答 2查看 465关注 0票数 1

每当我按下MyWidget中的任何区域,它就会在MyLayout类中触发第一个MyButton的on_touch_down事件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<MyButton@Button>:
  background_normal: ''
  background_color: [1,0,1,1]
  font_size: "44dp"
  color:[1,1,0,1]
  border:(1,1,1,1)
  text_size:self.size

<MyWidget@Widget>:
  id:customwidget
  canvas.before:
    Color:
      rgba:0.2,0.44,0.66,1
    Rectangle:
      pos:self.pos
      size:self.size

<MyLayout>:
  MyWidget:
    id:mywidget

  MyButton:
    id:button1
    text: "User Name"
    spacing: "10dp"
    on_touch_down: button1.text= self.text + "?"
    opacity: .8

  MyButton:
    text: "ikinci"
    on_touch_down: root.export_to_png("filename.png")
  MyButton:
    text: "ucuncu"

这是蟒蛇:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.widget import Widget

class MyLayout(BoxLayout):
    pass

class KivyApp(App):
    def build(self):
        return MyLayout()

if __name__ == "__main__":
    KivyApp().run()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-16 09:02:13

Python代码

  1. 创建一个class MyButton()并实现on_touch_down()方法来检查是否与我们的小部件发生冲突。

片段- Python代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyButton(Button):

    def on_touch_down(self, touch):
        if self.collide_point(*touch.pos):
            print("\tMyButton.on_touch_down:")
            if self.text == 'User Name':
                self.text= self.text + "?"
            elif self.text == 'ikinci':
                App.get_running_app().root.export_to_png("filename.png")
            return True
        return super(MyButton, self).on_touch_down(touch)

kv文件

  1. 将动态类<MyButton@Button>:重命名为类规则,<MyButton>:
  2. on_touch_down:中删除所有MyButton:

片段- kv文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<MyButton>:
    background_normal: ''
    background_color: [1,0,1,1]
    font_size: "44dp"
    color:[1,1,0,1]
    border:(1,1,1,1)
    text_size:self.size
...
    MyButton:
        id:button1
        text: "User Name"
        spacing: "10dp"
        opacity: .8

    MyButton:
        text: "ikinci"

    MyButton:
        text: "ucuncu"

触摸事件基础

默认情况下,将向所有当前显示的小部件分派触摸事件。这意味着小部件接收触摸事件,不管它是否发生在它们的物理区域内。 为了提供最大的灵活性,Kivy将事件分派给所有小部件,并让它们决定如何对它们作出反应。如果您只想响应小部件中的触摸事件,只需检查: def on_touch_down(self,touch):if self.collide_point(*touch.pos):#该触摸发生在小部件区域内。做点什么!经过

输出

票数 1
EN

Stack Overflow用户

发布于 2018-08-16 09:04:29

on_touch事件不是特定于任何小部件,而是传播到所有小部件。见文档。如果只希望Button响应,则可能希望使用on_presson_release事件(参见按钮行为)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51881192

复制
相关文章
PyQt 自定义窗口部件(二)
本篇介绍用如何QPainter()画出一个可以显示分数的滑块控件,并使其能正确地响应鼠标事件,键盘事件以及自动调整尺寸。
用户6021899
2019/08/14
1.2K0
PyQt 自定义窗口部件(三)
Y形管由abci、edcf 以及cihgf三部分组成,内部的颜色由流体的流速决定。各个部分均使用逻辑坐标系绘制。
用户6021899
2019/08/14
6160
PyQt 自定义窗口部件(一)
本篇以一个例子来介绍如何通过子类化QWidget或其它内置窗口部件来创建自定义的窗口部件。
用户6021899
2019/08/14
1.2K0
Flutte部件目录-基本部件(一)
一个容器首先用padding包围子组件(由decoration中出现的所有边框填满),然后将附加constraints应用于填充范围(将width和height作为约束合并(如果其中任一个非空)。然后container被 margin描述的额外的空白空间包围。
南郭先生
2018/08/14
7.5K0
代码触发,手动触发touchstart事件,touch事件,click事件,自定义事件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/150775.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
4.9K0
自定义事件的触发 dispatchEvent 的用法
页面A: // 创建自定义派发时间,并调用  let setEvent = new Event('setItemEvent')     setEvent.key = key     setEvent.newValue = val     window.dispatchEvent(setEvent)     signSetItem.apply(this, arguments) B页面: //根据自己需要来监听对应的key window.addEventListener("setItemEvent",func
biaoblog.cn 个人博客
2023/03/24
6430
Flutte部件目录-基本部件(二) 顶
支持以下图像格式:JPEG,PNG,GIF,GIF动画,WebP,WebP动画,BMP和WBMP
南郭先生
2018/08/14
4.4K0
Flutte部件目录-基本部件(二)
                                                    顶
Flutte部件目录-基本部件(三) 顶
要显示snackbar或持久底部表,请通过Scaffold.of获取当前BuildContext的ScaffoldState,然后使用ScaffoldState.showSnackBar和ScaffoldState.showBottomSheet函数。
南郭先生
2018/08/14
6.3K0
Flutte部件目录-基本部件(三)
                                                    顶
QSplitter(分离部件)
The QSplitter class implements a splitter widget. A splitter lets the user control the size of child widgets by dragging the boundary between them. Any number of widgets may be controlled by a single splitter. The typical use of a QSplitter is to create several widgets and add them using insertWidget() or addWidget().
全栈程序员站长
2022/08/03
7530
QSplitter(分离部件)
Flutte部件目录-布局
一个部件,将其子部件的体积缩小到可用空间的一部分。有关布局算法的更多详细信息,请参阅RenderFractionallySizedOverflowBox。
南郭先生
2018/08/14
1.5K0
多人部件解析
Towards Real World Human Parsing: Multiple-Human Parsing in the Wild https://arxiv.org/abs/1705.07206
用户1148525
2019/05/26
5920
js创建自定义事件或者自动触发已有事件
HTMLEvents:包括 ‘abort’, ‘blur’, ‘change’, ‘error’, ‘focus’, ‘load’, ‘reset’, ‘resize’, ‘scroll’, ‘select’, ‘submit’, ‘unload’.
IT工作者
2022/03/20
3.5K0
js创建自定义事件或者自动触发已有事件
HTMLEvents:包括 ‘abort’, ‘blur’, ‘change’, ‘error’, ‘focus’, ‘load’, ‘reset’, ‘resize’, ‘scroll’, ‘select’, ‘submit’, ‘unload’.
IT工作者
2022/03/14
3.8K0
QT应用编程: Qt自定义界面并提升窗口部件基类
一、环境介绍 QT版本: 5.12.6 操作系统: win10 64位 二、功能介绍 为了在UI设计师界面里,使用自定义控件(就是需要重写该控件的一些函数,比如重绘自己想要的图形界面),基本使用方式是,自己重写个控件,就是继承某个基类; 比如,写一个继承自QWidget的MyWidget界面类,这样就可以使用自己的方式处理这个界面,然后在UI设计师主界面中拖出来一个QWidet控件提升为MyWidget,这时,就可以将自定义的控件界面作为一个控件来用了。 提升的功能就是为了让自定义的控件用到UI设计师界面
DS小龙哥
2022/01/07
2.9K0
QT应用编程: Qt自定义界面并提升窗口部件基类
Wijmo 更优美的jQuery UI部件集:自定义 C1WijMenu
C1Wijmo 全部的控件是完全可定制的,并且可以根据你自己的需求定制他们的界面外观。 我准备使用C1Menu演示这一点。 让我们从向控件应用自定义主题开始。 改变主题 1) 创建一个网站,然后拖放一个C1Menu到web页面上。 2) 单击智能标记,并打开任务菜单。 3) 在主题属性中输入CDN的URL以指定主题。 例如,在我们的这个例子中,我们应用ui-darkness 主题 http://jquery-ui.googlecode.com/svn/tags/1.8.14/themes/ui-darkne
葡萄城控件
2018/01/10
1K0
Wijmo 更优美的jQuery UI部件集:自定义 C1WijMenu
自定义博客小表情
今天刷微博时候发现了几组可爱的大黄脸表情,相比QQ的大黄脸可是可爱的多,这么可爱不整博客里可惜了,因为绝大部分博客的表情一般都是引用的 OwO这个开源文件 ,所以可以通过修改一些文件信息,就可以把自己想要的表情添加到博客里来。
qiangzai
2021/12/21
5840
自定义博客小表情
# 微信小程序开发之-事件触发控件
button 属性: image.png wxml: <button bindtouchstart="onchilk" class="userbutton"> </button> wxss: .u
GuangdongQi
2018/05/24
9980
小程序如何避免多次点击,重复触发事件
作为前端开发,我们经常会遇到的场景,比如用户点击获取验证码按钮时,没有反应,大部分用户都会接着点击,这就会造成用户收到多条验证码,这是因为后台api请求比较慢,而客户端体验又做得不到位,导致用户以为没点击到或者是页面假死,在上次请求还没处理完,就再次点击按钮。这对于我们开发来说,这是bug。
honey缘木鱼
2018/09/26
6.3K0
Qt常用窗口部件
从《C++.GUI.Qt.4编程(第二版)》上整理来的。 Qt提供4中类型的按钮:QPushButton、QToolButton、QCheckBox 和 QRadioButton。QPushButto
tanmx
2018/05/25
1.9K0
QMainWindow 添加中心部件
上几篇文章我们使用 QMainWindow 添加了菜单栏、工具栏、状态栏等控件,他们分别在窗口中起到不同的作用。但千万别忽略了中间位置,因为中间位置是我们用来添加其他控件的位置,如果你直接在对象中new了某些其他控件(比如一个button),那么这个控件会覆盖菜单栏导致不能正常显示。这就需要我们来创建一个中心部件,以保证各个控件之间不会冲突。
我与梦想有个约会
2023/10/20
2350
QMainWindow 添加中心部件

相似问题

创建gnome小程序/小部件?

11

使用我的QGroupBox自定义小部件调整QT5大小

15

自定义小部件的验证事件

210

自定义事件不会在dojo小部件上触发。

23

如何在自定义元素或按钮小部件上触发事件?

130
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文