1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
class for the tab UI
"""
from PyQt5.QtWidgets import (QLabel, QGridLayout, QWidget, QTabWidget,
QTreeWidget, QTreeWidgetItem)
from PyQt5.QtGui import QIcon
from PyQt5 import QtWidgets
import sys
import random
class MaList(QTreeWidget):
def __init_(self):
QTreeWidget.__init_(self)
self.setColumnCount(1)
self.setHeaderLabels([("Name")])
self.view_dict_in= {}
self.view_dict_out= {}
self.in_items = QTreeWidgetItem([("In")])
self.out_items = QTreeWidgetItem([("Out")])
self.refresh()
self.expandAll()
def refresh(self):
# to save qtreeview expanded state
in_items_is_expanded = self.in_items.isExpanded()
out_items_is_expanded = self.out_items.isExpanded()
# to refresh the list
self.clear()
self.view_dict_in= {}
self.view_dict_out= {}
self.in_items = QTreeWidgetItem([("In")])
self.out_items = QTreeWidgetItem([("Out")])
row_in=0
row_out=0
for row in range(1,10):
nb_aleatoire = random.randint(1,1000)
data=QTreeWidgetItem(str(nb_aleatoire))
print(nb_aleatoire)
if nb_aleatoire % 2 == 0 :
self.in_items.addChild(data)
self.view_dict_in[nb_aleatoire] = row_in
row_in+=1
else :
self.out_items.addChild(data)
self.view_dict_out[nb_aleatoire] = row_out
row_out+=1
self.addTopLevelItem(self.in_items)
self.addTopLevelItem(self.out_items)
# to restore Qtreeview expanded state
self.in_items.setExpanded(in_items_is_expanded)
self.out_items.setExpanded(out_items_is_expanded)
def get_selection(self):
row = self.currentIndex().row() # row
cat = self.currentIndex().parent().row() # in/out
if row == -1 or cat == -1:
return None
else:
if cat == 0 or cat == 1:
if cat == 0:
nb_aleatoire = reverse_dict(self.view_dict_in, row)
else:
nb_aleatoire = reverse_dict(self.view_dict_out, row)
return nb_aleatoire
else:
pass
class MonWidget(QWidget):
"widget that define what is inside my tab"
def __init_(self):
QWidget.__init_(self)
# #########
# left side
# #########
self.dataview = MaList(self)
# clicked fonctionne, navigation clavier ok, mais pas de mise à jour
self.dataview.clicked.connect(self.on_nb_selected)
# itemSelectionChanged fonctionne, navigation clavier nok, mais pas de mise à jour
#self.dataview.itemSelectionChanged.connect(self.on_nb_selected)
# currentItemChanged ne fonctionne pas
#self.dataview.currentItemChanged.connect(self.on_nb_selected)
# #########
# right side
# #########
self.label_nb_name = QLabel("<h1> Test </h1>")
# add treeview
gridlayout = QGridLayout(self)
# add left and right side
# add treeview and tabs
gridlayout.addWidget(self.dataview, 0, 0, 9, 3)
gridlayout.addWidget(self.label_nb_name, 0, 3, 0, 7)
def on_nb_selected(self):
"update display when a item is selected"
nb = self.dataview.get_selection()
self.label_nb_name.setText("<h1>" + nb + "</h1>")
if __name__ == "__main__":
APP = QtWidgets.QApplication(sys.argv)
MAINWIN = MonWidget()
#MAINWIN = MaList()
MAINWIN.show()
sys.exit(APP.exec_()) |
Partager