python qt 利用线程 槽写的串口程序

问题遇到的现象和发生背景

采用继承的写法 slot
在槽 程序想要接收输入框内的值 并通过串口发送出去
输入框输入的是想要加到 字符串 motor circle'+' '+data16['data'] +'10' 中

img

问题相关代码,请勿粘贴截图
    def slot_Send_data16(self, parameter):  # 定义变量 paramater参数
         print("发送数据")
         data16 = {}
         data16['data'] = self.ui.lineEdit.text()  # 数据等于lineEdit的值 简单文本用text()
         now = datetime.now()
         date_time = now.strftime("%Y-%m-%d, %H:%M:%S")
         ss = "[" + date_time + "] 发→" + 'motor circle'+' '+data16['data'] +'10\r\n'
         print(ss)
         self.opt.write(ss)
         self.opt.flush()
         if self.state != 1:  # 不等于1 则返回,1串口打开,信号发送
             return
         print("发送数据")
         Byte_data16 = str.encode('motor circle'+' '+ data16['data']+' 10\r\n')
         print(Byte_data16)
         self.Serial.write(Byte_data16)
         self.signal_Send_data16_length16.emit(len(Byte_data16))  # 了解发送长


thread.py的程序很简单 差不多结构就是这样 ui不知道怎么调用了 或者 self.?.lineEdit.text 怎么改
线程里怎么获取控件内的值

from PyQt5.QtCore import QThread, pyqtSignal, QObject
import threading

from PyQt5.QtSerialPort import QSerialPort
from datetime import datetime

import serial_ui


class Serial_Qthread_function(QObject):
 
    # 信号
    signal_Srialstart_function     = pyqtSignal()
    signal_Send_data16 = pyqtSignal(object) 
    signal_Send_data16_length16 = pyqtSignal(object)  # 第16个按钮的字节长度

      def __init__(self, parent=None):
            super(Serial_Qthread_function, self).__init__(parent)
             print("初始化时候线程", threading.current_thread().ident)
             # 初始化状态

             self.state = 0  # 0未打开 1串口已打开 2串口已关闭

    def slot_Send_data16(self, parameter):  # 定义变量 paramater参数
         print("发送数据")
         data16 = {}
         data16['data'] = self.ui.lineEdit.text()  # 数据等于lineEdit的值 简单文本用text()
         now = datetime.now()
         date_time = now.strftime("%Y-%m-%d, %H:%M:%S")
         ss = "[" + date_time + "] 发→" + 'motor circle'+' '+data16['data'] +'10\r\n'
         print(ss)
         self.opt.write(ss)
         self.opt.flush()
         if self.state != 1:  # 不等于1 则返回,1串口打开,信号发送
             return
         print("发送数据")
         Byte_data16 = str.encode('motor circle'+' '+ data16['data']+' 10\r\n')
         print(Byte_data16)
         self.Serial.write(Byte_data16)
         self.signal_Send_data16_length16.emit(len(Byte_data16))  # 了解发送长
运行结果及报错内容

这句是不对的 我采用的槽 好像不能收到lineEdit内的值


data16['data'] = self.ui.lineEdit.text()  # 数据等于lineEdit的值 简单文本用text()

报错 AttributeError: 'QSerialPort' object has no attribute 'ui'

img

我的解答思路和尝试过的方法
我想要达到的结果

把文本框里面的值直接get出来呢,用按钮发送,或者链接焦点离开自动发送

报错显示从类QSerialPort中找不到 ui 呢,能不能把类的结构展示出来,ui 一般在界面类中管理或访问哦,你这个self 不会继承的是 QSerialPort 吧