
| Current Path : /proc/thread-self/root/home/ift/52_procpy/dataninja/test/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //proc/thread-self/root/home/ift/52_procpy/dataninja/test/tss_ui_demo.py |
import sys
import math
from PyQt5.QtWidgets import QWidget, QApplication, QSlider, QPushButton, QLabel, QCheckBox, QDial
from PyQt5.QtGui import QPainter, QColor, QPen, QBrush, QPainterPath
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QPalette, QPixmap, QColor
import random
import math
import numpy as np
color = 0
curvStartX = 140
curvStartY = 350
curvWidth = 300
curvHeight = 80
scale = 10
curvStep = curvWidth / scale
class Example(QWidget):
def __init__(self):
super().__init__()
self.use_palette()
self.initUI()
def initUI(self):
self.step = 0
self.setWindowTitle("Tss App")
self.label1 = QLabel(self)
self.label1.setPixmap(QPixmap('logo.jpg'))
self.label1.setGeometry(0, 0, 104, 38)
self.sld1 = QSlider(Qt.Vertical, self)
self.sld1.setGeometry(200, 50, 40, 200)
self.sld1.setMinimum(0)
self.sld1.setMaximum(99)
self.sld1.setTickPosition(QSlider.TicksLeft)
self.sld2 = QSlider(Qt.Horizontal, self)
self.sld2.setGeometry(500, 400, 200, 40)
self.sld2.setMinimum(0)
self.sld2.setMaximum(99)
self.sld1.valueChanged[int].connect(self.changevalue)
self.sld2.valueChanged[int].connect(self.changevalue)
self.dial = QDial(self)
self.dial.setGeometry(400, 150, 600, 180)
self.label2 = QLabel('The current value: 0 ', self)
self.label2.move(150, 30)
self.label3 = QLabel('The current value: 0 ', self)
self.label3.move(550, 390)
self.btn_start = QPushButton('Start', self)
self.btn_start.move(30, 80)
self.btn_start.clicked.connect(self.doStartAction)
self.btn_stop = QPushButton('Stop', self)
self.btn_stop.move(30, 120)
self.btn_stop.clicked.connect(self.doStopAction)
self.btn_new = QPushButton('Pause', self)
self.btn_new.move(30, 160)
self.btn_new.clicked.connect(self.doPauseAction)
self.setStyleSheet('QDial{background-color:rgb(255,0,0)}')
self.setStyleSheet('QWidget{background-color:rgb(173,216,230)}'
# 'QMainWindow{background-color:rgb(0,0,0)}'
)
self.value = 0
self.size = 0
self.stepArray = [0 for x in range(0, 300000)]
self.valueArray = [0 for x in range(0,300000)]
self.label_start_u = QLabel('0 S', self)
self.label_start_u.setGeometry(curvStartX, curvStartY + curvHeight + 5, 20, 20)
self.label_end_u = QLabel('20 S', self)
self.label_end_u.setGeometry(curvWidth + curvStartX, curvStartY + curvHeight + 5, 20, 20)
self.timer = QTimer(self)
self.timer.timeout.connect(self.changexx)
self.shape = 0
self.siganl = 0
self.amplification = curvHeight / (2 * 100) * (self.value + 1)
self.points = (
curvStartX + int(self.step / 100), (curvStartY + curvStartY + curvHeight + 50 * math.sin(self.value)) / 2)
self.path = QPainterPath()
self.xPrev = int(curvStartX + curvStep)
self.yPrev = int((curvStartY + curvStartY + curvHeight) / 2)
self.xCurrent = int(curvStartX + curvStep)
self.yCurrent = int((curvStartY + curvStartY + curvHeight) / 2)
self.show()
def changexx(self):
if self.step < 30000:
if self.siganl == 0:
self.step = self.step + 1
self.stepArray[self.size]=self.step
self.valueArray[self.size]=self.value
self.size = self.size+1
# self.path.lineTo(self.points)
print(self.step)
elif self.siganl == 1:
self.step = 0
self.size=0
print(self.step)
elif self.siganl == 2:
self.step = self.step
print(self.step)
self.step = self.step
def changevalue(self, value):
if self.shape == -1:
return
sender = self.sender()
global color
self.value = value
if self.shape != -1:
self.amplification = curvHeight / (2 * 100) * (self.value + 1)
if sender == self.sld1:
self.sld2.setValue(value)
self.dial.setValue(value)
else:
self.sld1.setValue(value)
self.dial.setValue(value)
self.shape = 2
result = value / 10
if result == 1:
self.setStyleSheet('QDial{background-color:rgb(255,20,0)}')
elif result == 3:
self.setStyleSheet('QDial{background-color:rgb(255,80,0)}')
elif result == 5:
self.setStyleSheet('QDial{background-color:rgb(255,130,0)}')
elif result == 8:
self.setStyleSheet('QDial{background-color:rgb(255,200,0)}')
elif result == 9:
self.setStyleSheet('QDial{background-color:rgb(255,255,255)}')
self.label2.setText('The current value:' + str(value))
self.label3.setText('The current value:' + str(value))
def doStartAction(self, value):
print("Start data")
self.shape = 1
self.siganl = 0
self.timer.start()
def doStopAction(self, value):
print("Stop data")
self.shape = 0
self.step = 0
self.value = 0
self.changevalue(self.value)
self.siganl = 1
self.size=0
self.amplification = curvHeight / (2 * 100) * (self.value + 1)
self.timer.stop()
self.size=0
def doPauseAction(self, value):
print("Pause data")
self.shape = -1
self.siganl = 2
def paintEvent(self, e):
qp = QPainter()
# qp.begin(self)
# self.drawCurveArea(qp)
pen = QPen(Qt.blue, 2, Qt.SolidLine)
qp.begin(self)
qp.setPen(pen)
qp.drawLine(curvStartX, curvStartY, curvWidth + curvStartX, curvStartY)
qp.drawLine(curvStartX, curvStartY, curvStartX, curvStartY + curvHeight)
qp.drawLine(curvStartX, curvStartY + curvHeight, curvWidth + curvStartX, curvStartY + curvHeight)
qp.drawLine(curvStartX + curvWidth, curvStartY, curvWidth + curvStartX, curvStartY + curvHeight)
pen = QPen(Qt.blue, 5, Qt.SolidLine)
qp.drawLine(curvStartX - 10, 0, curvStartX - 10, 600)
qp.setPen(pen)
pen2 = QPen(Qt.red, 2)
qp.setPen(pen2)
#qp.drawPoint(curvStartX + int(self.step / 100),(curvStartY + curvStartY + curvHeight + 50 * math.sin(self.value)) / 2)
if self.size > 0:
for index in range(0, self.size-1):
qp.drawPoint(curvStartX + int(self.stepArray[index] / 50),(curvStartY + curvStartY + curvHeight + self.valueArray[index]/2 * math.sin(curvStartX + int(self.stepArray[index] / 50))) / 2)
# qp.drawPoint(curvStartX + int(self.stepArray[index] / 100),(curvStartY + curvStartY + curvHeight + self.valueArray[index])*math.sin(self.stepArray[index] ) / 2)
self.update()
qp.end()
def use_palette(self):
window_pale = QPalette()
window_pale.setBrush(self.backgroundRole(), QBrush(QPixmap("back.jpg")))
self.setPalette(window_pale)
def drawCurveArea(self, qp):
pen = QPen(Qt.black, 2, Qt.SolidLine)
qp.begin(self)
qp.setPen(pen)
qp.drawLine(curvStartX, curvStartY, curvWidth + curvStartX, curvStartY)
qp.drawLine(curvStartX, curvStartY, curvStartX, curvStartY + curvHeight)
qp.drawLine(curvStartX, curvStartY + curvHeight, curvWidth + curvStartX, curvStartY + curvHeight)
qp.drawLine(curvStartX + curvWidth, curvStartY, curvWidth + curvStartX, curvStartY + curvHeight)
qp.end()
def drawStartLine(self, qp):
pen = QPen(Qt.black, 2, Qt.DashDotLine)
qp.setPen(pen)
qp.begin()
qp.drawLine(curvStartX, (curvStartY + curvStartY + curvHeight) / 2, curvStartX + curvStep,
(curvStartY + curvStartY + curvHeight) / 2)
qp.end()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())