diff --git a/Car.py b/Car.py index 9b57e4b..f6c31ed 100644 --- a/Car.py +++ b/Car.py @@ -57,6 +57,9 @@ class Car(): self.vmax=0 + self.S = 5 + self.T = 0.3 + self.vroom = 0 self.rawRoute = route @@ -162,8 +165,8 @@ class Car(): vbar=(self.v+vleader)/2 bbar=(bleader+self.b)/2 - S=5 - T=0.3 + S=self.S + T=self.T vsec=vleader+(S-vmax*T)/(vbar/bbar+T) vd=min(self.v+self.a*dt,vmax) #,vsec) self.v=max(0,vd) diff --git a/CarController.py b/CarController.py index ff91fb5..0aef228 100644 --- a/CarController.py +++ b/CarController.py @@ -2,7 +2,8 @@ import sumolib from Car import Car from Flow import Flow from carInfo import Ui_carInfo -from PySide6.QtWidgets import QWidget, QLabel +from varEdit import Ui_varEdit +from PySide6.QtWidgets import QWidget, QLabel, QToolBox from PySide6.QtCore import Qt, Slot, Signal, QThread from PySide6.QtCharts import QChart, QSplineSeries, QLineSeries from math import ceil @@ -75,14 +76,36 @@ class carInfo(QWidget): obj.setText(f"{key} : {val}") obj.update() +class varEdit(QWidget): + def __init__(self, parent, carController, varName, value): + super().__init__() + self.ui = Ui_varEdit() + self.ui.setupUi(self) + + self.hookName = varName + self.ui.name.setText(varName) + self.ui.value.setValue(value) + + self.CC = carController + + self.ui.value.valueChanged.connect(self.valueChanged) + + def valueChanged(self): + value = self.ui.value.value() + self.CC.updateConstant(self.hookName, value) + class CarController: - def __init__(self,parentMap): + def __init__(self, parentMap, mainWindow): self.map=parentMap self.cars=[] self.flows=[] self.t=0 - self.infoWidget=None + self.infoWidget=mainWindow.findChild(QToolBox, "carInfos") + varWidget = mainWindow.ui.constEdit + varWidget.addWidget(varEdit(varWidget, self, "S", 5)) + varWidget.addWidget(varEdit(varWidget, self, "T", 0.3)) + def fromPath(self,path): self.cars=[] self.t=0 @@ -134,5 +157,6 @@ class CarController: painter.setPen(Qt.white) car.draw(painter) - def setInfoWidget(self, widget): - self.infoWidget = widget + def updateConstant(self, name, val): + for car in self.cars: + car.__dict__[name] = val diff --git a/mainLoop.py b/mainLoop.py index 4a5cbc1..92c6711 100644 --- a/mainLoop.py +++ b/mainLoop.py @@ -17,9 +17,7 @@ class mainLoop(QObject): self.map = Map() - self.controller = CarController(self.map) - - self.controller.setInfoWidget(parent.findChild(QToolBox,"carInfos")) + self.controller = CarController(self.map, parent) self.painter.addMap(self.map) self.painter.addCarController(self.controller) diff --git a/varEdit.py b/varEdit.py new file mode 100644 index 0000000..523b3bd --- /dev/null +++ b/varEdit.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file 'varEdit.ui' +## +## Created by: Qt User Interface Compiler version 6.2.3 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, + QFont, QFontDatabase, QGradient, QIcon, + QImage, QKeySequence, QLinearGradient, QPainter, + QPalette, QPixmap, QRadialGradient, QTransform) +from PySide6.QtWidgets import (QApplication, QDoubleSpinBox, QHBoxLayout, QLabel, + QSizePolicy, QWidget) + +class Ui_varEdit(object): + def setupUi(self, varEdit): + if not varEdit.objectName(): + varEdit.setObjectName(u"varEdit") + varEdit.resize(400, 300) + self.horizontalLayout = QHBoxLayout(varEdit) + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.name = QLabel(varEdit) + self.name.setObjectName(u"name") + + self.horizontalLayout.addWidget(self.name) + + self.value = QDoubleSpinBox(varEdit) + self.value.setObjectName(u"value") + + self.horizontalLayout.addWidget(self.value) + + + self.retranslateUi(varEdit) + + QMetaObject.connectSlotsByName(varEdit) + # setupUi + + def retranslateUi(self, varEdit): + varEdit.setWindowTitle(QCoreApplication.translate("varEdit", u"Form", None)) + self.name.setText(QCoreApplication.translate("varEdit", u"TextLabel", None)) + # retranslateUi + diff --git a/varEdit.ui b/varEdit.ui new file mode 100644 index 0000000..00341cd --- /dev/null +++ b/varEdit.ui @@ -0,0 +1,31 @@ + + + varEdit + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + TextLabel + + + + + + + + + + + diff --git a/window.py b/window.py index 405062c..843d99b 100644 --- a/window.py +++ b/window.py @@ -48,6 +48,11 @@ class Ui_MainWindow(object): self.verticalLayout = QVBoxLayout() self.verticalLayout.setObjectName(u"verticalLayout") self.verticalLayout.setSizeConstraint(QLayout.SetDefaultConstraint) + self.constEdit = QVBoxLayout() + self.constEdit.setObjectName(u"constEdit") + + self.verticalLayout.addLayout(self.constEdit) + self.generalInfos = QVBoxLayout() self.generalInfos.setObjectName(u"generalInfos") self.horizontalLayout_3 = QHBoxLayout() @@ -118,7 +123,8 @@ class Ui_MainWindow(object): self.verticalLayout.addWidget(self.carInfos) self.verticalLayout.setStretch(0, 1) - self.verticalLayout.setStretch(1, 5) + self.verticalLayout.setStretch(1, 1) + self.verticalLayout.setStretch(2, 5) self.horizontalLayout.addLayout(self.verticalLayout) diff --git a/window.ui b/window.ui index 362f33d..95cc3df 100644 --- a/window.ui +++ b/window.ui @@ -34,10 +34,13 @@ - + QLayout::SetDefaultConstraint + + +