48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
from PyQt5.QtCore import Qt
|
|
from PyQt5.QtWidgets import QMainWindow, QSplitter
|
|
|
|
from dictlist import DictList
|
|
from mdi import MDIArea, MDISubWindow
|
|
|
|
|
|
class MainWindow(QMainWindow):
|
|
|
|
def __init__(self, title="grum.py", *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.setWindowTitle(title)
|
|
|
|
data = {"a": 10, "b": 20, "c": 30, "d": 40}
|
|
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", 100)
|
|
|
|
for sub in self.mdi.subWindowList():
|
|
if sub.windowTitle() == key:
|
|
self.mdi.setActiveSubWindow(sub)
|
|
return
|
|
|
|
sub = MDISubWindow(key, value)
|
|
self.mdi.addSubWindow(sub)
|
|
sub.show()
|
|
|
|
|
|
|