Added GUI
This commit is contained in:
parent
ae9774cf0d
commit
74df5cb3f0
23 changed files with 3174 additions and 2 deletions
81
uiwidget/widgetobject.py
Normal file
81
uiwidget/widgetobject.py
Normal file
|
@ -0,0 +1,81 @@
|
|||
import numpy as np
|
||||
import pyqtgraph
|
||||
from PyQt5 import QtWidgets, QtCore
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtWidgets import QTextEdit
|
||||
import pyqtgraph as pg
|
||||
|
||||
|
||||
class WidgetObject(QtWidgets.QWidget):
|
||||
def __init__(self, parent=None):
|
||||
super(WidgetObject, self).__init__(parent)
|
||||
|
||||
self.frame = 0
|
||||
self.tagFields = QtWidgets.QWidget()
|
||||
self.tagLayout = QtWidgets.QVBoxLayout()
|
||||
|
||||
# Setup Graph Plot Widget
|
||||
self.tagGraph = pg.PlotWidget()
|
||||
self.tagGraph.setBackground('w')
|
||||
self.tagGraph.setYRange(0, 400, padding=0)
|
||||
self.tagGraph.getPlotItem().getAxis('bottom').setTickSpacing(minor=50, major=100)
|
||||
self.tagGraph.getPlotItem().setTitle(title='Movement of Object Tags')
|
||||
self.tagPlots = dict()
|
||||
|
||||
self.tagTextFields = dict()
|
||||
self.plotText = dict()
|
||||
|
||||
layout = QtWidgets.QGridLayout()
|
||||
layout.addWidget(self.tagGraph, 0, 0)
|
||||
layout.addWidget(self.tagFields, 0, 1)
|
||||
self.setLayout(layout)
|
||||
|
||||
@QtCore.pyqtSlot(list, tuple, dict, list)
|
||||
def setInit(self, tags, frameSize, tracked, colors):
|
||||
|
||||
for i, tag in enumerate(tags):
|
||||
label = QtWidgets.QLabel('Object tag #%i:' % tag)
|
||||
label.setStyleSheet('color: black; background-color: rgb(%i,%i,%i)' % colors[i])
|
||||
label.setFixedHeight(20)
|
||||
field = QtWidgets.QTextEdit()
|
||||
field.setFixedHeight(20)
|
||||
field.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
||||
field.textChanged.connect(self.tagTextChanged)
|
||||
|
||||
self.tagTextFields[tag] = field
|
||||
trackedLabel = QtWidgets.QLabel('Tracked: {:.0%}'.format(tracked[tag]))
|
||||
oneTagLayout = QtWidgets.QHBoxLayout()
|
||||
oneTagLayout.addWidget(label)
|
||||
oneTagLayout.addWidget(field)
|
||||
oneTagLayout.addWidget(trackedLabel)
|
||||
|
||||
self.tagLayout.insertLayout(-1, oneTagLayout)
|
||||
|
||||
x = list(range(-200, 0)) # 200 time points
|
||||
y = [0 for _ in range(200)] # 200 data points
|
||||
|
||||
dataLine = self.tagGraph.plot(x, y, pen=pg.mkPen(color=colors[i]))
|
||||
self.tagPlots[tag] = dataLine
|
||||
text = pg.TextItem(text='', color=colors[i])
|
||||
text.setAnchor((1, i + 1))
|
||||
|
||||
self.plotText[tag] = text
|
||||
self.tagGraph.addItem(text)
|
||||
|
||||
self.tagFields.setLayout(self.tagLayout)
|
||||
|
||||
@QtCore.pyqtSlot(dict)
|
||||
def updateTagGraph(self, tagData):
|
||||
for tag, values in tagData.items():
|
||||
self.tagPlots[tag].setData(x=values[1], y=values[0]) # Update the data.
|
||||
if tagData:
|
||||
self.tagGraph.setXRange(np.min(values[1]), np.max(values[1]))
|
||||
|
||||
def tagTextChanged(self):
|
||||
for tag, field in self.tagTextFields.items():
|
||||
self.plotText[tag].setText(field.toPlainText())
|
||||
x, y = self.tagPlots[tag].getData()
|
||||
if len(x) > 0 and len(y) > 0:
|
||||
#print(tag, x[-1], y[-1])
|
||||
self.plotText[tag].setPos(x[-1], y[-1])
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue