2016-11-11 12 views
1

次のコードは、モーターをオンにして天幕を展開するための一時的なボタンを作るコードです。Momentary on screenボタンKivy on Python

githubのサンプルからコードを借りて、私のニーズに合わせて修正しました。

コードがわかるように、ボタンはラッチボタンとは対照的に瞬間的なボタンとして動作するように設定されていますが、この場合、ボタンをどれだけ長く押しても出力1/10秒のClock.scheduleの量だけオンになります。

私はボタンを押したまま出力を保持するために複数の異なる方法を試しましたが、満足のいく解決策を見つけることができません。

GPIOピンに瞬間的な外付け(物理)ボタンを付けることができますが、画面上のソフトウェアボタンで機能させることはできません。

一言で言えば、私は何が起こりたいのですか: タッチスクリーン上のボタンを押している間、モーターはボタンから指を離すまで動作し続けます。

誰でも私を助けてくれますか?前もって感謝します。

#Awning 
if obj.text == '[size=24]Awning\n 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]Awning\n Out[/size]",markup = True) 
    awningOut.bind(on_press=press_callback) 

    awningIn = ToggleButton(text="[size=24]Awning\n  In[/size]",markup = True) 
    awningIn.bind(on_press=press_callback) 

    layout.add_widget(awningOut) 
    layout.add_widget(awningIn) 

答えて

0

私はそれをこのように行うだろう:

#!/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() 
+0

ありがとうjiligezaを、私はイライラたように私はしばらくの間離れて、このプロジェクトからなっているが、私はそれが今週行く得られます。 –