From 47131af3a1845ec1aba9361e0d28db0f7f7035f8 Mon Sep 17 00:00:00 2001 From: Michael <michael.mutote@stud.th-deg.de> Date: Sat, 23 Dec 2023 05:05:00 -0800 Subject: [PATCH] Merge remote-tracking branch 'origin/main' # Conflicts: # training2.ipynb --- DisplayWindow.py | 128 ++++++++++++++++++++++++++++++++++++--------- RegressionModel.py | 21 ++++---- 2 files changed, 111 insertions(+), 38 deletions(-) diff --git a/DisplayWindow.py b/DisplayWindow.py index 3d1ac33..61a8f63 100644 --- a/DisplayWindow.py +++ b/DisplayWindow.py @@ -5,10 +5,27 @@ import pyqtgraph as pg from PyQt6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QGridLayout, QLabel, QPushButton, QSlider, QDateTimeEdit, - QLineEdit, QComboBox, QDateEdit) + QLineEdit, QComboBox, QDateEdit, QTabWidget) from PyQt6.QtGui import QPalette, QColor, QIcon +class MyTabs(QMainWindow): + def __init__(self): + super().__init__() + + # Create your custom pages (e.g., TradeView and OrderView) + trade_view = MainWindow() + order_view = Advanced() + + # Create a tab widget + tab_widget = QTabWidget(self) + tab_widget.addTab(trade_view, "Main") + tab_widget.addTab(order_view, "Advanced") + + # Set the central widget + self.setCentralWidget(tab_widget) + + class MainWindow(QMainWindow): def __init__(self): @@ -24,51 +41,110 @@ class MainWindow(QMainWindow): grid_layout = QGridLayout(central_widget) # Create labels and input fields - self.labels_text = ['Date', 'Airline', 'Destination', 'Model Start Year'] - self.input_fields = [QDateEdit(self), QComboBox(self), QComboBox(self), QComboBox(self)] - self.input_fields[1].addItems(RegressionModel.airlines) - self.input_fields[2].addItems(RegressionModel.destinations) - self.input_fields[3].addItems(list(map(str, RegressionModel.model_years))) + self.labels_text = ['Cut', 'Colour', 'Clarity', 'Carat', 'Depth', 'Table', 'X', 'Y', 'Z'] + self.input_fields = [QComboBox(self), QComboBox(self), QComboBox(self), QLineEdit(self), + QLineEdit(self), QLineEdit(self), QLineEdit(self), QLineEdit(self), + QLineEdit(self)] + self.input_fields[0].addItems(RegressionModel.cut) + self.input_fields[1].addItems(RegressionModel.colors) + self.input_fields[2].addItems(RegressionModel.clarity) + # add a button to capture all the data + self.calculate_button = QPushButton('Calculate Price', self) + self.calculate_button.clicked.connect(self.update_values) # Add labels and input fields to the grid layout - for i in range(4): + for i in range(len(self.labels_text)): label = QLabel(self.labels_text[i], self) grid_layout.addWidget(label, 0, i) grid_layout.addWidget(self.input_fields[i], 1, i) - # Connect signals - for i in range(len(self.input_fields)): - if i == 0: - self.input_fields[i].dateChanged.connect(self.update_values) - else: - self.input_fields[i].currentTextChanged.connect(self.update_values) - # Create a plot widget graphWidget = pg.PlotWidget(self) graphWidget.setBackground('w') - graphWidget.plot(RegressionModel.selected_day, RegressionModel.delay) + graphWidget.plot([1, 2, 3], [6, 8, 2]) # Add the plot widget to the grid layout - grid_layout.addWidget(graphWidget, 2, 0, 1, 4) - grid_layout.addWidget(QLabel("EXPECTED DELAY: ", self), 3, 0, 1, 1) - # Remember to add the delay value here + grid_layout.addWidget(self.calculate_button, 2, 0, 1, 2) + grid_layout.addWidget(graphWidget, 3, 0, 1, 9) + grid_layout.addWidget(QLabel("Predicted Price: ", self), 4, 0, 1, 1) + grid_layout.addWidget(QLabel(str(RegressionModel.price), self), 4, 2, 1, 1) + # Remember to add the predicted price self.setWindowTitle('Assistance Systems') self.show() def update_values(self): - menu_items = {0: "date", 1: "airline", 2: "destination", 3: "years to model"} - sender = self.sender() - for i in range(4): - if sender == self.input_fields[i]: - RegressionModel.GUI_selections[menu_items[i]] = sender.currentText() if i != 0 \ - else sender.dateTime() - print(RegressionModel.GUI_selections[menu_items[i]]) + menu_items = {0: 'cut', 1: 'color', 2: 'clarity', 3: 'carat', 4: 'depth', 5: 'table', + 6: 'x', 7: 'y', 8: 'z'} + for key,value in menu_items.items(): + print(key) + if key < 3: + RegressionModel.GUI_selections[value] = self.input_fields[key].currentText() + else: + RegressionModel.GUI_selections[value] = self.input_fields[key].text() + print(RegressionModel.GUI_selections) + + +class Advanced(QMainWindow): + + def __init__(self): + super().__init__() + self.setWindowIcon(QIcon("icon.ico")) + self.setMinimumSize(720, 640) + # + # # Create a central widget + # central_widget = QWidget(self) + # self.setCentralWidget(central_widget) + # + # # Create a grid layout and set it to the central widget + # grid_layout = QGridLayout(central_widget) + # + # # Create labels and input fields + # self.labels_text = ['Date', 'Airline', 'Destination', 'Model Start Year'] + # self.input_fields = [QDateEdit(self), QComboBox(self), QComboBox(self), QComboBox(self)] + # self.input_fields[1].addItems(RegressionModel.airlines) + # self.input_fields[2].addItems(RegressionModel.destinations) + # self.input_fields[3].addItems(list(map(str, RegressionModel.model_years))) + # + # # Add labels and input fields to the grid layout + # for i in range(4): + # label = QLabel(self.labels_text[i], self) + # grid_layout.addWidget(label, 0, i) + # grid_layout.addWidget(self.input_fields[i], 1, i) + # + # # Connect signals + # for i in range(len(self.input_fields)): + # if i == 0: + # self.input_fields[i].dateChanged.connect(self.update_values) + # else: + # self.input_fields[i].currentTextChanged.connect(self.update_values) + # + # # Create a plot widget + # graphWidget = pg.PlotWidget(self) + # graphWidget.setBackground('w') + # graphWidget.plot(RegressionModel.selected_day, RegressionModel.delay) + # + # # Add the plot widget to the grid layout + # grid_layout.addWidget(graphWidget, 2, 0, 1, 4) + # grid_layout.addWidget(QLabel("EXPECTED DELAY: ", self), 3, 0, 1, 1) + # # Remember to add the delay value here + # + # self.setWindowTitle('Assistance Systems') + # self.show() + # + # def update_values(self): + # menu_items = {0: "date", 1: "airline", 2: "destination", 3: "years to model"} + # sender = self.sender() + # for i in range(4): + # if sender == self.input_fields[i]: + # RegressionModel.GUI_selections[menu_items[i]] = sender.currentText() if i != 0 \ + # else sender.dateTime() + # print(RegressionModel.GUI_selections[menu_items[i]]) app = QApplication(sys.argv) -window = MainWindow() +window = MyTabs() window.show() app.exec() diff --git a/RegressionModel.py b/RegressionModel.py index be40be0..d683c35 100644 --- a/RegressionModel.py +++ b/RegressionModel.py @@ -3,16 +3,13 @@ import random import pandas as pd import json -delaytime = [] -with open('destination_cities.json', 'r') as f: - destinations = json.load(f) -with open('airlines.json', 'r') as f: - airlines = json.load(f) - -model_years = list(i for i in range(2018, 2023)) -selected_day = list(range(366)) -delay = list(delaytime) -# Shared Data from GUI -# GUI_selections = {"date": "", "airline": "", "destination": "", "years to model": ""} -GUI_selections = {"date": "", "destination": "", "years to model": ""} + +diamonds = pd.read_csv('diamonds.csv') +cut = list(diamonds["cut"].unique()) +colors = list(diamonds["color"].unique()) +clarity = list(diamonds["clarity"].unique()) +GUI_selections = {} +price_caret = [] +price = 0 + -- GitLab