大佬教程收集整理的这篇文章主要介绍了将动态文本更新添加到 pyQt 脚本,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在我当前的 pyqt 脚本中添加更新数据字段(数字)的功能。我试图使用“addLabel”,但我无法动态更新它们的内容。
关于如何制作的任何建议?我正在使用 addplot 函数来创建将处理来自 UDP 数据包的一些数据的图。在某些情况下,我只想动态显示值。不确定用于此目的的最佳小部件是什么?
当前脚本:
from pyqtgraph.Qt import QtGui,QtCore
import numpy as np
import pyqtgraph as pg
from pyqtgraph.ptime import time
import struct
from struct import pack,unpack
import socket
app = QtGui.QApplication([])
data = []
data_throttle = []
data_brake = []
data_steering = []
data_state = []
data_error = []
pg.setConfigOption('BACkground',(0,0))
#pg.setConfigOption(antialias=TruE)
win = pg.GraphicsWindow()
win.resize(500,200)
p1 = win.addplot(title="Sequence")
p1.setwindowtitle('Sequence')
p1.setRange(QtCore.QRectF(0,100,150))
#p1.setLabel('bottom','Packet',units=' ')
p1.showGrID(True,TruE)
p2 = win.addplot(title="Throttle")
p2.setwindowtitle('Throttle')
p2.setRange(QtCore.QRectF(0,255))
#p2.setLabel('bottom',units=' ')
p2.showGrID(True,TruE)
p3 = win.addplot(title="Brake")
p3.setwindowtitle('Brake')
p3.setRange(QtCore.QRectF(0,255))
#p3.setLabel('bottom',units=' ')
p3.showGrID(True,TruE)
p4 = win.addplot(title="Steering")
p4.setwindowtitle('Steering')
p4.setRange(QtCore.QRectF(0,-1,2))
#p4.setLabel('bottom',units=' ')git
p4.showGrID(True,TruE)
p5 = win.addplot(title="Vehicle State")
p5.setwindowtitle('Vehicle State')
p5.setRange(QtCore.QRectF(0,10))
#p5.setLabel('bottom',units=' ')
p5.showGrID(True,TruE)
P6 = win.addplot(title="Errors")
P6.setwindowtitle('Errors')
P6.setRange(QtCore.QRectF(0,10))
#P6.setLabel('bottom',units=' ')
P6.showGrID(True,TruE)
top_label = "Percent"
bottom_label = "85"
l_labels = win.addLayout(col=1,colspan=1)
l_labels.addLabel(top_label,row=0,col=0,rowspan=1,colspan=1,size='30pt',bold=TruE)
l_labels.addLabel(bottom_label,row=2,rowspan=4,size='200pt',color='606060')
l_labels.setContentsmargins(0,100)
curve = p1.plot(pen='r')
curve2 = p2.plot(pen='b')
curve3 = p3.plot(pen='g')
curve4 = p4.plot(pen='y')
curve5 = p5.plot(pen='r')
curve6 = P6.plot(pen='b')
# Receive UDP packets transmitted by a broadcasTing service
RECEIVE_IP = ''
RECEIVE_PORT = 2337
RECEIVE_ADDRESS = (RECEIVE_IP,RECEIVE_PORT)
recv_socket = socket.socket(socket.AF_INET,socket.soCK_DGRAM)
recv_socket.bind(RECEIVE_ADDRESS)
JOY_CODE = '=HBBBhHQQB'
ACK_CODE = '=HHBBHBBhBqB'
ptr = 0
lastTime = time()
fps = None
def update():
global recv_socket,fScale
global curve,data,data_throttle,data_brake,data_steering,ptr,p,lastTime,fps,data_state,data_error
recv_message,address = recv_socket.recvfrom(22)
message_ID,ack_payload,ack_seq,vehicle_state,vehicle_speed,throttle,brake,steering,error,timestamp,checksum = struct.unpack(ACK_CODE,recv_messagE)
#data = throttle
data.append(ack_seq)
data = data[-100:]
data_throttle.append(throttlE)
data_throttle = data_throttle[-100:]
data_brake.append(brakE)
data_brake = data_brake[-100:]
data_steering.append(steering / 32768)
data_steering = data_steering[-100:]
vehicle_state = vehicle_state & 0x07
data_state.append(vehicle_statE)
data_state = data_state[-100:]
data_error.append(error)
data_error = data_error[-100:]
#print(throttlE)
#print("got data"," ","\n")
# print data
#curve.setData(fScale,_callSync='off')
curve.setData(data,_callSync='off')
curve2.setData(data_throttle,_callSync='off')
curve3.setData(data_brake,_callSync='off')
curve4.setData(data_steering,_callSync='off')
curve5.setData(data_state,_callSync='off')
curve6.setData(data_error,_callSync='off')
bottom_label = vehicle_state
Now = time()
dt = Now - lastTime
lastTime = Now
app.processEvents() ## force complete redraw for every plot
timer = QtCore.QTimer()
timer.timeout.connect(updatE)
timer.start(0)
## Start Qt event loop unless running in interactive mode.
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore,'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
我能够通过在 Plot 中使用 TextItem 来找出解决方案
from pyqtgraph.Qt import QtGui,QtCore
import numpy as np
import pyqtgraph as pg
from pyqtgraph.ptime import time
import struct
from struct import pack,unpack
import socket
app = QtGui.QApplication([])
data = []
data_throttle = []
data_brake = []
data_steering = []
data_state = []
data_error = []
pg.setConfigOption('BACkground',(0,0))
#pg.setConfigOption(antialias=TruE)
win = pg.GraphicsWindow()
win.resize(1600,1000)
p1 = win.addPlot(title="Sequence",row=0,col=1)
p1.setWindowtitle('Sequence')
p1.setRange(QtCore.QRectF(0,100,150))
p1.showGrid(True,TruE)
p2 = win.addPlot(title="Throttle",col=2)
p2.setWindowtitle('Throttle')
p2.setRange(QtCore.QRectF(0,255))
p2.showGrid(True,TruE)
p3 = win.addPlot(title="Brake",col=3)
p3.setWindowtitle('Brake')
p3.setRange(QtCore.QRectF(0,255))
p3.showGrid(True,TruE)
p4 = win.addPlot(title="Steering",row=1,col=1)
p4.setWindowtitle('Steering')
p4.setRange(QtCore.QRectF(0,-1,2))
p4.showGrid(True,TruE)
p5 = win.addPlot(title="Vehicle State",col=2)
p5.setWindowtitle('Vehicle State')
p5.setRange(QtCore.QRectF(0,10))
p5.showGrid(True,TruE)
P6 = win.addPlot(title="Errors",col=3)
P6.setWindowtitle('Errors')
P6.setRange(QtCore.QRectF(0,10))
P6.showGrid(True,TruE)
P7 = win.addPlot(title="Counter",col=4)
p8 = win.addPlot(title="Counter",col=4)
font=QtGui.QFont()
font.setPixelSize(300)
anchor = pg.TextItem()
anchor.setText("0")
anchor.setColor(QtGui.QColor(255,255,255))
anchor.setFont(font)
anchor1 = pg.TextItem()
anchor1.setText("0")
anchor1.setColor(QtGui.QColor(255,255))
anchor1.setFont(font)
P7.addItem(anchor)
P7.showGrid(false,falsE)
P7.hideAxis('bottom')
P7.hideAxis('left')
p8.addItem(anchor1)
p8.showGrid(false,falsE)
p8.hideAxis('bottom')
p8.hideAxis('left')
curve = p1.plot(pen='r')
curve2 = p2.plot(pen='b')
curve3 = p3.plot(pen='g')
curve4 = p4.plot(pen='y')
curve5 = p5.plot(pen='r')
curve6 = P6.plot(pen='b')
# Receive UDP packets transmitted by a broadcasTing service
RECEIVE_IP = ''
RECEIVE_PORT = 2337
RECEIVE_ADDRESS = (RECEIVE_IP,RECEIVE_PORT)
recv_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
recv_socket.bind(RECEIVE_ADDRESS)
JOY_CODE = '=HBBBhHQQB'
ACK_CODE = '=HHBBHBBhBqB'
ptr = 0
lastTime = time()
fps = None
def update():
global recv_socket,fScale
global curve,data,data_throttle,data_brake,data_steering,ptr,p,lastTime,fps,data_state,data_error
recv_message,address = recv_socket.recvfrom(22)
message_id,ack_payload,ack_seq,vehicle_state,vehicle_speed,throttle,brake,steering,error,timestamp,checksum = struct.unpack(ACK_CODE,recv_messagE)
#data = throttle
data.append(ack_seq)
data = data[-100:]
data_throttle.append(throttlE)
data_throttle = data_throttle[-100:]
data_brake.append(brakE)
data_brake = data_brake[-100:]
data_steering.append(steering / 32768)
data_steering = data_steering[-100:]
vehicle_state = vehicle_state & 0x07
data_state.append(vehicle_statE)
data_state = data_state[-100:]
data_error.append(error)
data_error = data_error[-100:]
curve.setData(data,_callSync='off')
curve2.setData(data_throttle,_callSync='off')
curve3.setData(data_brake,_callSync='off')
curve4.setData(data_steering,_callSync='off')
curve5.setData(data_state,_callSync='off')
curve6.setData(data_error,_callSync='off')
#updating Text Value
anchor.setText(str(vehicle_statE))
anchor1.setText(str(vehicle_statE))
now = time()
dt = now - lastTime
lastTime = now
app.processEvents() ## force complete redraw for every plot
timer = QtCore.QTimer()
timer.timeout.connect(updatE)
timer.start(0)
## Start Qt event loop unless running in interactive mode.
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore,'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
以上是大佬教程为你收集整理的将动态文本更新添加到 pyQt 脚本全部内容,希望文章能够帮你解决将动态文本更新添加到 pyQt 脚本所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。