mirror of
https://github.com/RolandWH/SIPPCompare.git
synced 2025-06-28 07:11:16 +01:00
add time slider and saving functionality to output
This commit is contained in:
@ -133,7 +133,7 @@ class SIPPCompare(QMainWindow):
|
||||
# Show the output window - this func is called from calculate_fee()
|
||||
def show_output_win(self):
|
||||
# Refresh the results when new fees are calculated
|
||||
self.output_win.display_output(self.results)
|
||||
self.output_win.display_output(self.results, 1)
|
||||
self.output_win.show()
|
||||
|
||||
def show_platform_list(self):
|
||||
|
@ -1,11 +1,12 @@
|
||||
import datetime
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
from PyQt6 import uic
|
||||
from PyQt6.QtGui import QIcon
|
||||
from PyQt6.QtWidgets import QWidget
|
||||
from PyQt6.QtWidgets import QWidget, QFileDialog
|
||||
|
||||
import resource_finder
|
||||
from widgets.mpl_widget import MplWidget
|
||||
|
||||
|
||||
class OutputWindow(QWidget):
|
||||
@ -15,17 +16,43 @@ class OutputWindow(QWidget):
|
||||
uic.loadUi(resource_finder.get_res_path("gui/output_window.ui"), self)
|
||||
self.setWindowIcon(QIcon(resource_finder.get_res_path("icon2.ico")))
|
||||
|
||||
def display_output(self, results: list):
|
||||
ax = self.graphWidget.canvas.axes
|
||||
ax.clear()
|
||||
ax.cla()
|
||||
self.graphWidget.canvas.draw_idle()
|
||||
# Define class variables
|
||||
self.canvas = self.graphWidget.canvas
|
||||
self.ax = self.canvas.axes
|
||||
self.fig = self.canvas.figure
|
||||
self.results = []
|
||||
|
||||
# Handle events
|
||||
self.save_graph_but.clicked.connect(self.save_graph)
|
||||
self.time_slider.valueChanged.connect(self.change_time)
|
||||
|
||||
def display_output(self, results: list, years: int):
|
||||
self.results = results
|
||||
self.ax.clear()
|
||||
self.ax.cla()
|
||||
self.canvas.draw_idle()
|
||||
|
||||
names = []
|
||||
values = []
|
||||
for result in results:
|
||||
names.append(result[4])
|
||||
values.append(sum(result[:4]))
|
||||
values.append(sum(result[:4]) * years)
|
||||
|
||||
h_bars = ax.barh(names, values)
|
||||
ax.bar_label(h_bars, label_type='center', labels=[f"£{x:,.2f}" for x in h_bars.datavalues])
|
||||
h_bars = self.ax.barh(names, values)
|
||||
self.ax.bar_label(h_bars, label_type='center', labels=[f"£{x:,.2f}" for x in h_bars.datavalues])
|
||||
|
||||
def save_graph(self):
|
||||
file_picker = QFileDialog(self)
|
||||
file_picker.setFileMode(QFileDialog.FileMode.Directory)
|
||||
folder_path = ""
|
||||
if file_picker.exec():
|
||||
folder_path = file_picker.selectedFiles()[0]
|
||||
|
||||
cur_time = datetime.now()
|
||||
filename_str = f"{folder_path}/SIPPCompare-{cur_time.year}.{cur_time.month}.{cur_time.day}.png"
|
||||
self.fig.savefig(filename_str, dpi=150)
|
||||
|
||||
def change_time(self):
|
||||
years: int = self.time_slider.value()
|
||||
self.time_lab.setText(f"Fees over {years} year(s) (assuming no change in value)")
|
||||
self.display_output(self.results, years)
|
||||
|
@ -6,8 +6,8 @@ from PyQt6.QtWidgets import QWidget, QVBoxLayout
|
||||
class MplWidget(QWidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.canvas = FigureCanvasQTAgg(Figure(figsize=(10, 10), dpi=100))
|
||||
self.canvas = FigureCanvasQTAgg(Figure(figsize=(15, 8), dpi=100))
|
||||
vertical_layout = QVBoxLayout()
|
||||
vertical_layout.addWidget(self.canvas)
|
||||
self.canvas.axes = self.canvas.figure.add_subplot(1, 1, 1)
|
||||
self.setLayout(vertical_layout)
|
||||
self.setLayout(vertical_layout)
|
||||
|
Reference in New Issue
Block a user