使用PyQt操作绕过wait_for_edge

时间:2016-06-19 12:05:33

标签: python multithreading while-loop pyqt raspberry-pi

我无法绕过在我的PyQt界面应用中使用raspberry pi的线程中运行的wait_for_edge()

所以要运行界面我使用以下代码

class initUI:
    global t

    def __init__(self):
        global t
        global MainWindow
        self.gui = ui7.Ui_MainWindow()
        self.gui.setupUi(MainWindow)
        self.gui.botaocancelar.clicked.connect(self.accaoCancelar)

        t = threading.Thread(target= self.principal)
        t.daemon = True
        t.start()

我必须创建一个线程,以便显示视图并继续执行程序

之后目标函数开始工作,代码为:

    def principal(self):
        while count < int(quantidadeDoArtigo):
            GPIO.wait_for_edge(9, GPIO.FALLING )

每当它调用的函数被卡住等待pi 9连接时,如果程序正在运行,这是正确的,但我在界面上有一个按钮来关闭程序(accaoCancelar)。

我的问题是当我点击该按钮时,程序被冻结,因为wait_for_edge阻止了我的while循环,这个循环无法被破坏,应用程序将关闭。

有任何帮助吗?

0 个答案:

没有答案