屏幕上的瞬间按钮Kivy on Python



我有下面的代码,这是使屏幕上的瞬时按钮保持电机在滚动遮阳篷。

我从github上的一个例子中借用了代码,希望根据我的需要修改它。

您可以看到,代码将一个按钮设置为瞬时按钮,而不是闭锁按钮,这是我想要的,然而,在这种情况下,无论我按住按钮多长时间,输出只在时钟时打开。时间为1/10秒。

我已经尝试了多种不同的方法来得到这个保持输出只要我按住按钮,但我无法找到一个满意的解决方案?

我可以在GPIO引脚上做一个瞬时外部(物理)按钮来做到这一点,没有问题,但不能让它在屏幕上的软件按钮上工作?

所以简单地说,我想要发生的是:当我按下触摸屏上的按钮时,电机应该一直运行,直到我把手指从按钮上移开。

请问有人能帮我吗?提前谢谢。
#Awning
if obj.text == '[size=24]Awningn   Out[/size]':
    # turn on output:
    GPIO.output(awnoutPin, GPIO.HIGH)
    # schedule it to turn off:
    Clock.schedule_once(awnout1, .1)   #output stays on if this removed

    #Awning - Momentary
    awningOut = ToggleButton(text="[size=24]Awningn   Out[/size]",markup = True)
    awningOut.bind(on_press=press_callback)
    awningIn = ToggleButton(text="[size=24]Awningn     In[/size]",markup = True)
    awningIn.bind(on_press=press_callback)
    layout.add_widget(awningOut)
    layout.add_widget(awningIn)

我会这样做:

#!/usr/bin/env python3.5
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.clock import Clock
gui = '''
GridLayout
    cols: 1
    Label
        text: button.name
    MyButton
        id: button
        name: ''
'''

class MyButton(Button):
    def send_signal(self, dt):
        self.name = str(dt)
    def on_press(self):
        Clock.schedule_interval(self.send_signal, 0)
    def on_release(self):
        Clock.unschedule(self.send_signal)

class Test(App):
    def build(self):
        return Builder.load_string(gui)
Test().run()

最新更新