问题描述
我为应用程序编写了一个代码,该代码将直接比较图像并使用pyside2提供输出。输出将显示在GUI以及使用Pyfirmata通过Arduino Uno连接的LED中。现在,我希望我的程序在虚拟模式(通过GUI“运行”按钮)和物理模式(通过在Arduino Uno中连接的按钮)中执行。当按下此按钮时,代码的“运行”部分将执行。 / p>
我试图通过在pyside2代码的 main 中编写while循环(读取按钮状态并在单击时执行代码)来实现此目的。但是,在执行时,只有“物理”模式(通过按钮)在工作,并且我无法使用GUI的“运行”按钮。也就是说,GUI在单击按钮时执行程序,然后进入不响应状态。它会一直保持这种状态,直到再次单击按钮。我无法完全使用GUI的“运行”按钮。
我是Python,Pyside和Pyfirmata的新手。有人可以帮我吗?
代码是这样的。
class Ui_xxx(object):
def setupUi(self,xxx):
content
self.retranslateUi(xxx)
QtCore.QMetaObject.connectSlotsByName(xxx)
self.button1.clicked.connect(self.button1)
self.button2.clicked.connect(self.button2)
self.button3.clicked.connect(self.button3)
self.button4.clicked.connect(self.button4)
self.say_run.clicked.connect(self.say_run)
def retranslateUi(self,xxx):
content
def button1(self):
content
def button2(self):
content
def button3(self):
content
self.say_run()
def button4(self):
content
def say_run(self):
QtCore.QCoreApplication.processEvents()
content
if os.listdir(dir1) == []:
content
else:
content
@goto.with_goto
def main():
global board
board = pyfirmata.Arduino('COM3')
import sys
app = QtWidgets.QApplication(sys.argv)
xxx = QtWidgets.QMainWindow()
ui = Ui_xxx()
ui.setupUi(xxx)
xxx.show()
time.sleep(5)
it = pyfirmata.util.Iterator(board)
it.start()
digital_input = board.get_pin('d:5:i')
def ws():
while True:
sw = digital_input.read()
if sw is True:
board.digital[12].write(1)
time.sleep(5)
board.digital[12].write(0)
time.sleep(5)
ui.say_run()
QtCore.QCoreApplication.processEvents()
break
label .loop101
ws()
QtCore.QCoreApplication.processEvents()
goto .loop101
board.exit()
sys.exit(app.exec_())
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)