Commit 94590b72 authored by Pedro Henrique Kopper's avatar Pedro Henrique Kopper

Adicionar comentarios

parent c52fd2bd
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Classe Main (Principal) #
# Autores: Pedro Henrique Kopper (pedro.kopper@ufrgs.br) -> https://lief.if.ufrgs.br/~phckopper #
# Licença: GNU GPLv2 #
# Licença: GNU GPLv3 #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
import sys
......@@ -14,30 +14,39 @@ UPDATE_INTERVAL = 250 # milisegundos
class App(object):
def __init__(self):
# Inicializa algumas flags globais pra renderização em HiDPI funcionar
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) #enable highdpi scaling
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True) #use highdpi icons
# Inicializa as coisas do Qt
self.app = QtWidgets.QApplication(sys.argv)
self.mainWindow = QtWidgets.QMainWindow()
self.dialog = QtWidgets.QDialog(self.mainWindow)
self.timer = QTimer(self.app)
# Seta as variáveis de estado da aplicação
self.running = False
self.elapsedTime = 0
# Cria a interface principal
self.ui = Ui_MainWindow()
self.ui.setupUi(self.mainWindow)
self.setupConnections()
# Inicializa os dois gráficos
self.pressurePlot = Graph(self.ui.pressaoGraph, "Pressão", "bar")
self.temperaturaPlot = Graph(self.ui.temperaturaGraph, "Temperatura", "ºC")
# Exibe a tela maximizada
self.mainWindow.showMaximized()
# Liga os slots de eventos dos componentes das interfaces nas respectivas funções
def setupConnections(self):
self.ui.controlBtn.clicked.connect(self.startStop)
self.timer.timeout.connect(self.updateData)
# Gerencia o pressionamento de começar/pausar, (des)ligando o timer de acordo
# e atualizando o texto do botão
def startStop(self):
if self.running:
self.timer.stop()
......@@ -48,6 +57,7 @@ class App(object):
self.running = True
self.ui.controlBtn.setText("PARAR")
# É chamada a cada UPDATE_INTERVAL milisegundos e é responsável por atualizar as informações da tela
def updateData(self):
self.elapsedTime += UPDATE_INTERVAL * 0.001
......
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Classe Graph (Gráfico) #
# Autores: Pedro Henrique Kopper (pedro.kopper@ufrgs.br) -> https://lief.if.ufrgs.br/~phckopper #
# Licença: GNU GPLv3 #
# Propósito: Abstrair a implementação dos gráficos de exibição (pyqtgraph) #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
from pyqtgraph import mkColor, mkPen
class Graph(object):
# Inicializa o gráfico, recebendo como parâmetros seu
# PlotItem, nome de exibição e sua unidade de medida
def __init__(self, graph, name, units):
self.graph = graph
self.plot = graph.plot(pen=mkPen(mkColor("#FF0000"), width=2))
......@@ -9,6 +18,7 @@ class Graph(object):
self.setupGraphics(name, units)
# Inicializa algumas configurações dos gráficos
def setupGraphics(self, name, units):
self.graph.setBackground((240, 240, 240))
self.graph.setClipToView(True)
......@@ -19,6 +29,7 @@ class Graph(object):
self.graph.getViewBox().setMouseEnabled(False, False) # Previne uso do mouse para controle do zoom
self.graph.setMenuEnabled(False)
# Adiciona um ponto no gráfico
def addPoint(self, point):
x, y = point
self.dataX.append(x)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment