2016-11-11 65 views
1

我有以下代碼是使屏幕上的瞬時按鈕來保持電機推出遮陽篷。短暫的屏幕上的按鈕基維在Python上

我借鑑了github上的一個例子的代碼,希望能夠根據我的需要進行修改。

正如你所看到的代碼設置一個按鈕作爲一個瞬間按鈕,而不是鎖定按鈕,這是我想要的,但是,在這種情況下,無論我按住按鈕多久,輸出只有Clock.schedule的數量是1/10秒。

我已經嘗試了多種不同的方式,只要按住按鈕就可以保持輸出,但我無法找到令人滿意的解決方案?

我可以在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,我已經從這個項目走了一會兒,因爲我很沮喪,但我會給它一個去這個星期。 –