如何在pyqt5中使用无限while循环?

问题描述

我的GUI可以正常工作,所有按钮等都可以正常工作,除了其中一个使用无限while循环,并且当我单击主代码中定义的按钮(开始)时,该按钮会冻结。你能帮助我吗? 这是我的GUI代码

from PyQt5 import QtCore,QtGui,QtWidgets


class Ui_Form(object):
def setupUi(self,Form):
    Form.setobjectName("Form")
    Form.resize(1671,1042)
    self.pushButton = QtWidgets.QPushButton(Form)
    self.pushButton.setGeometry(QtCore.QRect(850,500,31,61))
    self.pushButton.setText("")
    self.pushButton.setCheckable(False)
    self.pushButton.setFlat(True)
    self.pushButton.setobjectName("pushButton")
    self.pushButton_3 = QtWidgets.QPushButton(Form)
    self.pushButton_3.setGeometry(QtCore.QRect(350,510,61))
    self.pushButton_3.setText("")
    self.pushButton_3.setCheckable(False)
    self.pushButton_3.setFlat(True)
    self.pushButton_3.setobjectName("pushButton_3")
    self.pushButton_4 = QtWidgets.QPushButton(Form)
    self.pushButton_4.setGeometry(QtCore.QRect(40,61))
    self.pushButton_4.setText("")
    self.pushButton_4.setCheckable(False)
    self.pushButton_4.setFlat(True)
    self.pushButton_4.setobjectName("pushButton_4")
    self.pushButton_5 = QtWidgets.QPushButton(Form)
    self.pushButton_5.setGeometry(QtCore.QRect(360,720,61,191))
    self.pushButton_5.setText("")
    self.pushButton_5.setCheckable(False)
    self.pushButton_5.setFlat(True)
    self.pushButton_5.setobjectName("pushButton_5")
    self.pushButton_2 = QtWidgets.QPushButton(Form)
    self.pushButton_2.setGeometry(QtCore.QRect(540,61))
    self.pushButton_2.setText("")
    self.pushButton_2.setCheckable(False)
    self.pushButton_2.setFlat(True)
    self.pushButton_2.setobjectName("pushButton_2")
    self.pushButton_6 = QtWidgets.QPushButton(Form)
    self.pushButton_6.setGeometry(QtCore.QRect(500,710,211))
    self.pushButton_6.setText("")
    self.pushButton_6.setCheckable(False)
    self.pushButton_6.setFlat(True)
    self.pushButton_6.setobjectName("pushButton_6")
    self.pushButton_7 = QtWidgets.QPushButton(Form)
    self.pushButton_7.setGeometry(QtCore.QRect(120,940,41,31))
    self.pushButton_7.setText("")
    self.pushButton_7.setCheckable(False)
    self.pushButton_7.setFlat(True)
    self.pushButton_7.setobjectName("pushButton_7")
    self.pushButton_8 = QtWidgets.QPushButton(Form)
    self.pushButton_8.setGeometry(QtCore.QRect(210,31))
    self.pushButton_8.setText("")
    self.pushButton_8.setCheckable(False)
    self.pushButton_8.setFlat(True)
    self.pushButton_8.setobjectName("pushButton_8")
    self.label_2 = QtWidgets.QLabel(Form)
    self.label_2.setGeometry(QtCore.QRect(930,40,281,51))
    font = QtGui.QFont()
    font.setPointSize(16)
    font.setBold(True)
    font.setWeight(75)
    self.label_2.setFont(font)
    self.label_2.setobjectName("label_2")
    self.label_3 = QtWidgets.QLabel(Form)
    self.label_3.setGeometry(QtCore.QRect(930,140,531,51))
    font = QtGui.QFont()
    font.setPointSize(16)
    font.setBold(True)
    font.setWeight(75)
    self.label_3.setFont(font)
    self.label_3.setobjectName("label_3")
    self.label_4 = QtWidgets.QLabel(Form)
    self.label_4.setGeometry(QtCore.QRect(930,280,141,51))
    font = QtGui.QFont()
    font.setPointSize(16)
    font.setBold(True)
    font.setWeight(75)
    self.label_4.setFont(font)
    self.label_4.setobjectName("label_4")
    self.label_5 = QtWidgets.QLabel(Form)
    self.label_5.setGeometry(QtCore.QRect(930,200,361,51))
    font = QtGui.QFont()
    font.setPointSize(14)
    font.setBold(True)
    font.setWeight(75)
    self.label_5.setFont(font)
    self.label_5.setText("")
    self.label_5.setobjectName("label_5")
    self.lcdNumber = QtWidgets.QLCDNumber(Form)
    self.lcdNumber.setGeometry(QtCore.QRect(1070,250,131,91))
    font = QtGui.QFont()
    font.setPointSize(36)
    font.setBold(True)
    font.setWeight(75)
    self.lcdNumber.setFont(font)
    self.lcdNumber.setFrameShape(QtWidgets.qframe.NoFrame)
    self.lcdNumber.setDigitCount(5)
    self.lcdNumber.setSegmentStyle(QtWidgets.QLCDNumber.Flat)
    self.lcdNumber.setProperty("value",37.0)
    self.lcdNumber.setobjectName("lcdNumber")
    self.label = QtWidgets.QLabel(Form)
    self.label.setGeometry(QtCore.QRect(10,50,901,931))
    self.label.setText("")
    self.label.setScaledContents(True)
    self.label.setobjectName("label")
    self.pushButton_9 = QtWidgets.QPushButton(Form)
    self.pushButton_9.setGeometry(QtCore.QRect(1290,20,121,41))
    font = QtGui.QFont()
    font.setPointSize(10)
    font.setBold(True)
    font.setWeight(75)
    self.pushButton_9.setFont(font)
    self.pushButton_9.setobjectName("pushButton_9")
    self.pushButton_10 = QtWidgets.QPushButton(Form)
    self.pushButton_10.setGeometry(QtCore.QRect(1290,70,41))
    font = QtGui.QFont()
    font.setPointSize(10)
    font.setBold(True)
    font.setWeight(75)
    self.pushButton_10.setFont(font)
    self.pushButton_10.setobjectName("pushButton_10")
    self.pushButton_11 = QtWidgets.QPushButton(Form)
    self.pushButton_11.setGeometry(QtCore.QRect(1290,41))
    font = QtGui.QFont()
    font.setPointSize(10)
    font.setBold(True)
    font.setWeight(75)
    self.pushButton_11.setFont(font)
    self.pushButton_11.setobjectName("pushButton_11")
    self.pushButton_12 = QtWidgets.QPushButton(Form)
    self.pushButton_12.setGeometry(QtCore.QRect(1290,300,41))
    font = QtGui.QFont()
    font.setPointSize(10)
    font.setBold(True)
    font.setWeight(75)
    self.pushButton_12.setFont(font)
    self.pushButton_12.setobjectName("pushButton_12")
    self.pushButton_13 = QtWidgets.QPushButton(Form)
    self.pushButton_13.setGeometry(QtCore.QRect(1220,920,51))
    font = QtGui.QFont()
    font.setPointSize(12)
    font.setBold(True)
    font.setWeight(75)
    self.pushButton_13.setFont(font)
    self.pushButton_13.setobjectName("pushButton_13")
    self.pushButton_14 = QtWidgets.QPushButton(Form)
    self.pushButton_14.setGeometry(QtCore.QRect(1460,51))
    font = QtGui.QFont()
    font.setPointSize(12)
    font.setBold(True)
    font.setWeight(75)
    self.pushButton_14.setFont(font)
    self.pushButton_14.setobjectName("pushButton_14")
    self.graphicsView = PlotWidget(Form)
    self.graphicsView.setGeometry(QtCore.QRect(930,360,711,531))
    self.graphicsView.setobjectName("graphicsView")
    self.pushButton_15 = QtWidgets.QPushButton(Form)
    self.pushButton_15.setGeometry(QtCore.QRect(970,51))
    font = QtGui.QFont()
    font.setPointSize(12)
    font.setBold(True)
    font.setWeight(75)
    self.pushButton_15.setFont(font)
    self.pushButton_15.setobjectName("pushButton_15")
    self.label.raise_()
    self.pushButton.raise_()
    self.pushButton_3.raise_()
    self.pushButton_4.raise_()
    self.pushButton_5.raise_()
    self.pushButton_2.raise_()
    self.pushButton_6.raise_()
    self.pushButton_7.raise_()
    self.pushButton_8.raise_()
    self.label_2.raise_()
    self.label_3.raise_()
    self.label_4.raise_()
    self.label_5.raise_()
    self.lcdNumber.raise_()
    self.pushButton_9.raise_()
    self.pushButton_10.raise_()
    self.pushButton_11.raise_()
    self.pushButton_12.raise_()
    self.pushButton_13.raise_()
    self.pushButton_14.raise_()
    self.graphicsView.raise_()
    self.pushButton_15.raise_()

    self.retranslateUi(Form)
    QtCore.QMetaObject.connectSlotsByName(Form)

def retranslateUi(self,Form):
    _translate = QtCore.QCoreApplication.translate
    Form.setwindowTitle(_translate("Form","Form"))
    self.pushButton.setToolTip(_translate("Form","Right Ulnar Nerve"))
    self.pushButton_3.setToolTip(_translate("Form","Left Radial Nerve"))
    self.pushButton_4.setToolTip(_translate("Form","Right Radial Nerve"))
    self.pushButton_5.setToolTip(_translate("Form","Right Plantar Nerve"))
    self.pushButton_2.setToolTip(_translate("Form","Left Ulnar Nerve"))
    self.pushButton_6.setToolTip(_translate("Form","Left Plantar Nerve"))
    self.pushButton_7.setToolTip(_translate("Form","Right Fibular Nerve"))
    self.pushButton_8.setToolTip(_translate("Form","Left Fibular Nerve"))
    self.label_2.setText(_translate("Form","Select your method:"))
    self.label_3.setText(_translate("Form","Select the nerve you want to test:"))
    self.label_4.setText(_translate("Form","Setpoint:"))
    self.pushButton_9.setText(_translate("Form","Ascending"))
    self.pushButton_10.setText(_translate("Form","Descending"))
    self.pushButton_11.setText(_translate("Form","Up"))
    self.pushButton_12.setText(_translate("Form","Down"))
    self.pushButton_13.setText(_translate("Form","Start"))
    self.pushButton_14.setText(_translate("Form","Clear"))
    self.pushButton_15.setText(_translate("Form","Preparation"))
from pyqtgraph import PlotWidget


if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())'''

这是我的主要代码

tempf = []

shc = []

ser = serial.Serial('COM13',9600)

class SetUI_main(Ui_Form):

def __init__(self):
    self.timer = QtCore.QTimer()
    self.timer.timeout.connect(self.draw)

def draw(self):
    time.sleep(0.5)
    sh = 0
    while True:
        time.sleep(0.1)
        data = ser.readline()
        temp = float(data.decode())
        sh += 0.6
        shc.append(sh)
        tempf.append(temp)
        print(tempf)
        #print(shc)
        self.graphicsView.plot(tempf,shc)

def start(self):
    s = 's'.encode('ascii')
    ser.write(s)
    print('Start')
    self.timer.start(2000)

def connector(self):
    self.pushButton_13.clicked.connect(self.start)

然后是运行代码

''' 从PyQt5导入QtCore,QtGui,QtWidgets 从PyQt5.QtCore导入pyqtSignal,QThread 导入序列

from un import SetUI_main


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    from PyQt5.QtCore import pyqtSignal,QThread



    ui = SetUI_main()


    ui.setupUi(Form)
    ui.connector()



    Form.show()

    sys.exit(app.exec_())

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)