我在做串口通讯的界面,通讯是正常的。
在while循环下,为什么print可以正常运行,但文本框的.setText(srt))却无法运行?
import sys
from PySide6.QtWidgets import QApplication,QPushButton,QLineEdit,QVBoxLayout,QHBoxLayout,QWidget
from PySide6.QtCore import QRect
from math import *
import serial
import time
class MyWindow(QWidget):
def __init__(self,parent=None):
super().__init__(parent)
self.setWindowTitle('圆周间隙测试机控制程序')
self.resize(600,400)
self.setupUi()
def setupUi(self): #建立界面
self.vboxLayout=QVBoxLayout(self)
self.lineText=QLineEdit(self) #单行文本
self.lineText.setGeometry(QRect(50,50,200,30))
self.btn_com=QPushButton(self)
self.btn_com.setText('显示扭矩')
self.btn_com.setGeometry(QRect(50,150,100,30))
self.btn_com.clicked.connect(self.sendcode) #按钮信号与槽连接
def sendcode(self): #定义收发字符的槽函数
temp_send = '01 03 00 08 00 02 45 c9'
ser = serial.Serial("COM5", 9600)
temp_send = bytes.fromhex(temp_send) #将发送的数据变为二进制
while True:
if ser.is_open:
ser.write(temp_send)
time.sleep(0.5)
buffer_data = ser.in_waiting
if buffer_data:
return_data = ser.read(buffer_data)
return_data_hex = str(return_data.hex()) # 二进制转换为16进制
toque=((int(return_data_hex[6:10], 16)/1000)-12)*25
** print("当前扭矩为:", toque) # while循环下 可以按时间间隔打印扭矩值
self.lineText.setText(str(toque)) #while循环下 ,无法将扭矩值字符填充到文本框**
time.sleep(3)
if __name__=='__main__':
app=QApplication(sys.argv)
window=MyWindow()
window.show()
sys.exit(app.exec())