Files
grum/mainwin.py
T
2022-12-15 18:37:51 +01:00

60 lines
1.4 KiB
Python

import numpy as np
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QMainWindow, QSplitter
import assets
from dictlist import DictList
from mdi import MDIArea, MDISubPlot
X = np.arange(100) / 10
class MainWindow(QMainWindow):
def __init__(self, *args, title="grum", **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle(title)
self.setWindowIcon(assets.icon())
data = {
"sine": [X, np.sin(X)],
"cosine": [X, np.cos(X)],
"exp": [X, np.exp(X)],
"log": [X, np.log(X+1)]
}
self.lst = lst = DictList(data)
lst.setAlternatingRowColors(True)
lst.doubleClicked.connect(self.on_select_list_item)
self.setCentralWidget(lst)
bar = self.menuBar()
self.mdi = mdi = MDIArea(bar)
splitter = QSplitter(Qt.Horizontal)
splitter.addWidget(lst)
splitter.addWidget(mdi)
splitter.setSizes([100, 1000])
self.setCentralWidget(splitter)
def on_select_list_item(self, index):
key, value = self.lst.get(index)
#TODO: just a test for dynamic adding
self.lst.add("x", [X, X])
for sub in self.mdi.subWindowList():
if sub.windowTitle() == key:
self.mdi.setActiveSubWindow(sub)
return
sub = MDISubPlot(key, value)
self.mdi.addSubWindow(sub)
sub.show()