# -*- coding:utf-8 -*-
#import serial
import serial
import sys
import time
import threading
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QPushButton,QLineEdit # 这里导入了一个按钮控件
from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
ser = serial.Serial("/dev/ttyAMA0", 115200) # 位置1 #选择使用哪个串口,波特率多少
ser.flushInput() # 位置2 清除缓冲区
ser.write("begin".encode("utf - 8")) # 位置3 发送函数,并设置发送时候的编码格式
class MyTemperatureThread(QThread): #线程
breakSignal = pyqtSignal(int,int,int,int,int,int,int,int,int,int)
def __init__(self, parent=None): #线程初始化
super().__init__(parent)
def run(self):
while 1:
count = ser.inWaiting() # 读取返回值 读取缓冲区字节
print(count) #打印出来已经接受了多少个字节
if count == 10: #当满三个字节进行刷新界面
recv = ser.read(count) # 进行读取
self.breakSignal.emit(recv[0],recv[1],recv[2],recv[3],recv[4],recv[5],recv[6],recv[7],recv[8],recv[9]) #给界面送数值 有几个变量就需要在上面定义的时候添加几个int
print(recv)
ser.flushInput() # 清除缓冲区
time.sleep(0.1) # 位置8
class Demo(QWidget): # 让我们自定义这个类继承QWidget,可以当做是一个空白窗口
def __init__(self):
super(Demo, self).__init__()
self.resize(900, 300) # 设置窗口长宽都为600
self.label = QLineEdit("Label", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.label.setText("1")
self.labelA = QLineEdit("LabelA", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelA.setText("2")
self.labelB = QLineEdit("LabelB", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelB.setText("3")
self.labelC = QLineEdit("LabelB", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelC.setText("4")
self.labelD = QLineEdit("LabelB", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelD.setText("5")
self.labelq1 = QLabel("方向:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelq2 = QLabel("X:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelq3 = QLabel("Y:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelq4 = QLabel("左码盘:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelq5 = QLabel("右码盘:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelq1.move(10, 13) #
self.labelq2.move(10, 53)
self.labelq3.move(10, 93)
self.labelq4.move(10, 133)
self.labelq5.move(10, 173)
self.label.move(80, 10) #
self.labelA.move(80, 50)
self.labelB.move(80, 90)
self.labelC.move(80, 130)
self.labelD.move(80, 170)
#################################
self.Line = QLineEdit("Label", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.Line.setText("6")
self.Line1 = QLineEdit("LabelA", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.Line1.setText("7")
self.Line2 = QLineEdit("LabelB", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.Line2.setText("8")
self.Line3 = QLineEdit("LabelB", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.Line3.setText("9")
self.Line4 = QLineEdit("LabelB", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.Line4.setText("10")
self.labelW1 = QLabel("X+:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelW2 = QLabel("X-:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelW3 = QLabel("Y+:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelW4 = QLabel("Y-:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelW5 = QLabel("颜色:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelW1.move(260, 13) #
self.labelW2.move(260, 53)
self.labelW3.move(260, 93)
self.labelW4.move(260, 133)
self.labelW5.move(260, 173)
self.Line.move(340, 10) #
self.Line1.move(340, 50)
self.Line2.move(340, 90)
self.Line3.move(340, 130)
self.Line4.move(340, 170)
#############################################
self.labelqqq = QLabel("显示颜色区域:", self) # 第一个参数是指定的文本,第二个参数是指定的父类DemoQLabel函数
self.labelqqq.resize(350, 350)
self.labelqqq.move(500, 10)
# 是存在和属于于Demo()窗口上的
# 接着我们编写程序入口处代码
# def chuli(t):
# a.labelB.setText(str(t))
#槽的动作函数
def chuli(data1,data2,data3,data4,data5,data6,data7,data8,data9,data10):
a.label.setText(str(data1))
a.labelA.setText(str(data2))
a.labelB.setText(str(data3))
a.labelC.setText(str(data4))
a.labelD.setText(str(data5))
a.Line.setText(str(data6))
a.Line1.setText(str(data7))
a.Line2.setText(str(data8))
a.Line3.setText(str(data9))
a.Line4.setText(str(data10))
if __name__ == "__main__":
app = QApplication(sys.argv) # 传入sys.argv参数用于构造
a = Demo()
a.show()
T = MyTemperatureThread()
T.breakSignal.connect(chuli) #将线程绑定到槽
T.start()
# 因为窗口和控件默认是隐藏的,所以我们要调用show()来进行显示
sys.exit(app.exec()) # 此时a作为参数传递给了sys.exit()表示正常退出python程序
帮人同学修改pyqt5界面成功
于 2019-07-24 19:55:43 首次发布