Advertisement
Guest User

Untitled

a guest
Nov 25th, 2017
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 45.31 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. #!/usr/bin/python
  4. #-*- coding: utf-8 -*-
  5.  
  6. from PyQt4.QtGui import *
  7. from PyQt4.QtCore import *
  8. import sys, os
  9. from PIL import Image
  10.  
  11. class EssaiQStackedWidget_Seq_Prof(QWidget) :
  12. # Classe essai QTable Widget
  13. def __init__(self, parent=None):
  14. super(EssaiQStackedWidget_Seq_Prof, self).__init__(parent)
  15.  
  16. self.setWindowTitle("Essai QStackedWidget Seq Prof")
  17. self.resize(400, 540)
  18. self.setGeometry(0, 0, 400, 540)
  19.  
  20. groupe_1 = QGroupBox()
  21.  
  22. # La liste du menu se fait par
  23. # l'intermédiaire d'un QComBoBox
  24. liste = [u'Phase 1 de construction de la séquence du professeur', u"Phase 2 de construction de la séquence du professeur", u'Phase 3 de construction de la séquence du professeur', u'Phase 4 de construction de la séquence du professeur', u'Phase 5 de construction de la séquence du professeur']
  25. self.liste_menu = QComboBox()
  26. self.liste_menu.setMinimumHeight(36)
  27. self.liste_menu.addItems(liste)
  28. # ToolTips sur les items de la combo
  29. self.liste_menu.setItemData(0, u"Niveau de classe, durée, Séquence n°, Titre progression, Incitation,\nDemande, Notions abordées, Consignes, Contraintes", Qt.ToolTipRole)
  30. self.liste_menu.setItemData(1, u"Questionnement, Que vont apprendre les élèves,\nQuestion d'enseignement, Entrée principale du\nprogramme, Champ des pratiques plastiques", Qt.ToolTipRole)
  31. self.liste_menu.setItemData(2, u"Vocabulaire", Qt.ToolTipRole)
  32. self.liste_menu.setItemData(3, u"Questions posées aux élèves", Qt.ToolTipRole)
  33. self.liste_menu.setItemData(3, u"Références artistiques", Qt.ToolTipRole)
  34.  
  35. self.w_menu_stack_1 = QWidget()
  36. self.w_menu_stack_2 = QWidget()
  37. self.w_menu_stack_3 = QWidget()
  38. self.w_menu_stack_4 = QWidget()
  39. self.w_menu_stack_5 = QWidget()
  40.  
  41. self.stack_phase_1()
  42. self.stack_phase_2()
  43. self.stack_phase_3()
  44. self.stack_phase_4()
  45. self.stack_phase_5()
  46.  
  47. self.stack = QStackedWidget(self)
  48. self.stack.addWidget(self.w_menu_stack_1)
  49. self.stack.addWidget(self.w_menu_stack_2)
  50. self.stack.addWidget(self.w_menu_stack_3)
  51. self.stack.addWidget(self.w_menu_stack_4)
  52. self.stack.addWidget(self.w_menu_stack_5)
  53.  
  54. hbox = QVBoxLayout(self)
  55. hbox.addWidget(self.liste_menu)
  56. hbox.addWidget(self.stack)
  57.  
  58. self.setLayout(hbox)
  59.  
  60. # Phase 3
  61. # -----------------------
  62. # Dictionnaire des mots de vocabulaire
  63. # -----------------------
  64. self.dico_vocab_mot = {}
  65. # -----------------------
  66. # Dictionnaire des définitions des mots de vocabulaire
  67. # -----------------------
  68. self.dico_vocab_def = {}
  69. # -----------------------
  70. # Liste pour chargement des données
  71. # (écriture des textes par l'utilisateur)
  72. # -----------------------
  73. self.liste_mots_vocabulaire = []
  74.  
  75. # Phase 4
  76. # -----------------------
  77. # Dictionnaire des questions
  78. # posées aux élèves
  79. # -----------------------
  80. self.dico_question_pos_elev = {}
  81. # -----------------------
  82. # Liste pour chargement des données
  83. # (écriture des textes par l'utilisateur)
  84. # -----------------------
  85. self.liste_questions_pos_elev = []
  86.  
  87. # Phase 5
  88. # -----------------------
  89. # Dictionnaire du chemin des références aristiques
  90. # -----------------------
  91. self.dico_chem_ref_art = {}
  92. # -----------------------
  93. # Dictionnaire des commentaires des références artistiques
  94. # -----------------------
  95. self.dico_com_ref_art = {}
  96. # -----------------------
  97. # Dictionnaire des QPushButton de chargement références artistiques
  98. # -----------------------
  99. self.dico_bout_charg_ref_art = {}
  100. # -----------------------
  101. # Liste pour chargement des données
  102. # (écriture des textes par l'utilisateur)
  103. # -----------------------
  104. self.liste_ref_artistiques = []
  105.  
  106. # Signal
  107. self.liste_menu.currentIndexChanged.connect(self.affiche_phases)
  108.  
  109. def stack_phase_1(self):
  110. '''
  111. '''
  112. # Widgets groupés
  113. groupe_1 = QGroupBox()
  114. groupe_2 = QGroupBox()
  115.  
  116. grid_1 = QGridLayout()
  117. grid_1.setSpacing(0)
  118.  
  119. grid_2 = QGridLayout()
  120. grid_2.setSpacing(0)
  121.  
  122. # ==========================================
  123. # Labels Stacked 1
  124. # ==========================================
  125. label_classe = QLabel(u"Niveau de classe :")
  126. label_duree = QLabel(u"Durée :")
  127. label_sequence = QLabel(u"Séquence n° :")
  128. label_progression = QLabel(u"Titre progression :")
  129. label_incitation = QLabel(u"Incitation :")
  130. label_demande = QLabel(u"Demande :")
  131. label_notions_abordees = QLabel(u"Notions abordées :")
  132. label_consignes = QLabel(u"Consignes :")
  133. label_contraintes = QLabel(u"Contraintes :")
  134. # ==========================================
  135. # Widgets Stacked 1
  136. # ==========================================
  137. # Cases à cocher pour la sélection du niveau de classe
  138. self.caseClasse6 = QRadioButton(u"6ème")
  139. self.caseClasse5 = QRadioButton(u"5ème")
  140. self.caseClasse4 = QRadioButton(u"4ème")
  141. self.caseClasse3 = QRadioButton(u"3ème")
  142. # Drapeau (aucune classe n'est cochée
  143. # donc self.classe est à 0)
  144. self.classe = 0
  145. # Les lignes de saisie
  146. self.ligne_duree = QLineEdit()
  147. self.ligne_sequence = QLineEdit()
  148. self.ligne_progression = QLineEdit()
  149. self.ligne_incitation = QLineEdit()
  150. # Les QTextEdit de saisie
  151. self.texte_demande = QTextEdit()
  152. self.texte_demande.setMaximumHeight(100)
  153. self.texte_demande.setMinimumHeight(100)
  154. self.texte_notions_abordees = QTextEdit()
  155. self.texte_notions_abordees.setMaximumHeight(42)
  156. self.texte_notions_abordees.setMinimumHeight(42)
  157. self.texte_consignes = QTextEdit()
  158. self.texte_consignes.setMaximumHeight(70)
  159. self.texte_consignes.setMinimumHeight(70)
  160. self.texte_contraintes = QTextEdit()
  161. self.texte_contraintes.setMaximumHeight(70)
  162. self.texte_contraintes.setMinimumHeight(70)
  163.  
  164. # Disposition dans la grille (stacked 1)
  165. grid_1.addWidget(label_classe, 0, 0)
  166. grid_1.addWidget(self.caseClasse6, 0, 1)
  167. grid_1.addWidget(self.caseClasse5, 0, 2)
  168. grid_1.addWidget(self.caseClasse4, 0, 3)
  169. grid_1.addWidget(self.caseClasse3, 0, 4)
  170.  
  171. grid_2.addWidget(label_duree, 1, 0)
  172. grid_2.addWidget(self.ligne_duree, 1, 1, 1, 4)
  173. grid_2.addWidget(label_sequence, 2, 0)
  174. grid_2.addWidget(self.ligne_sequence, 2, 1, 1, 4)
  175. grid_2.addWidget(label_progression, 3, 0)
  176. grid_2.addWidget(self.ligne_progression, 3, 1, 1, 4)
  177. grid_2.addWidget(label_incitation, 4, 0)
  178. grid_2.addWidget(self.ligne_incitation, 4, 1, 1, 4)
  179. grid_2.addWidget(label_demande, 5, 0)
  180. grid_2.addWidget(self.texte_demande, 5, 1, 1, 4)
  181. grid_2.addWidget(label_notions_abordees, 6, 0)
  182. grid_2.addWidget(self.texte_notions_abordees, 6, 1, 1, 4)
  183. grid_2.addWidget(label_consignes, 7, 0)
  184. grid_2.addWidget(self.texte_consignes, 7, 1, 1, 4)
  185. grid_2.addWidget(label_contraintes, 8, 0)
  186. grid_2.addWidget(self.texte_contraintes, 8, 1, 1, 4)
  187.  
  188. # ============================================= #
  189. groupe_1.setLayout(grid_1)
  190. groupe_2.setLayout(grid_2)
  191.  
  192. layout = QGridLayout()
  193. layout.setSpacing(4)
  194. layout.addWidget(groupe_1, 0, 0)
  195. layout.addWidget(groupe_2, 1, 0)
  196. # ============================================= #
  197.  
  198. #
  199. #self.w_menu_stack_1.setLayout(grid)
  200.  
  201. # Le QStackedWidget englobe et fait apparaître la grille
  202. # ici la grille layout (qui elle-même englobe le QGroupBox)
  203. self.w_menu_stack_1.setLayout(layout)
  204.  
  205. # Initialisation des listes de récup des données
  206. self.liste_donnees = []
  207.  
  208. # ==========================================
  209. # Signaux
  210. # ==========================================
  211. # Les cases à cocher QRadioButton (utilisation de lambda
  212. # car il y a un argument dans la fonction appelée)
  213. self.caseClasse6.toggled.connect(lambda:self.caseEtCombo(self.caseClasse6))
  214. self.caseClasse5.toggled.connect(lambda:self.caseEtCombo(self.caseClasse5))
  215. self.caseClasse4.toggled.connect(lambda:self.caseEtCombo(self.caseClasse4))
  216. self.caseClasse3.toggled.connect(lambda:self.caseEtCombo(self.caseClasse3))
  217. #
  218. self.ligne_duree.textChanged.connect(self.changements_phase_1)
  219. self.ligne_sequence.textChanged.connect(self.changements_phase_1)
  220. self.ligne_progression.textChanged.connect(self.changements_phase_1)
  221. self.ligne_incitation.textChanged.connect(self.changements_phase_1)
  222. #
  223. self.texte_demande.textChanged.connect(self.changements_phase_1)
  224. self.texte_notions_abordees.textChanged.connect(self.changements_phase_1)
  225. self.texte_consignes.textChanged.connect(self.changements_phase_1)
  226. self.texte_contraintes.textChanged.connect(self.changements_phase_1)
  227.  
  228. def stack_phase_2(self):
  229. '''
  230. '''
  231. # Widgets groupés
  232. groupe_1 = QGroupBox()
  233. groupe_2 = QGroupBox()
  234. groupe_3 = QGroupBox()
  235.  
  236. grid_1 = QGridLayout()
  237. grid_1.setSpacing(0)
  238.  
  239. grid_2 = QGridLayout()
  240. grid_2.setSpacing(10)
  241.  
  242. grid_3 = QGridLayout()
  243. grid_3.setSpacing(10)
  244.  
  245. # ==========================================
  246. # Labels Stacked 2
  247. # ==========================================
  248. label_questionnement = QLabel(u"Questionnement :")
  249. label_que_vont_app_eleves = QLabel(u"Que vont apprendre\nles élèves :")
  250. label_question_denseignement = QLabel(u"Question\nd'enseignement :")
  251. label_entree_princ_prog = QLabel(u"Entrée principale\ndu programme :")
  252. label_champ_pratiq_plast = QLabel(u"Champ des pratiques\nplastiques :")
  253. # ==========================================
  254. # Widgets Stacked 2
  255. # ==========================================
  256. self.texte_questionnement = QTextEdit()
  257. self.texte_questionnement.setMaximumHeight(90)
  258. self.texte_questionnement.setMinimumHeight(90)
  259. self.texte_que_vont_app_eleves = QTextEdit()
  260. self.texte_que_vont_app_eleves.setMaximumHeight(90)
  261. self.texte_que_vont_app_eleves.setMinimumHeight(90)
  262. self.texte_question_denseignement = QTextEdit()
  263. self.texte_question_denseignement.setMaximumHeight(90)
  264. self.texte_question_denseignement.setMinimumHeight(90)
  265. # Cases à cocher pour la sélection de
  266. # l'entrée principale du programme
  267. self.caseEntr_1_Prog = QRadioButton(u"Cours d'Arts\nPlastiques")
  268. self.caseEntr_1_Prog.setChecked(True)
  269. # Drapeau la valeur par défaut est Cours ArtsP quand
  270. # l'utilisateur n'a pas sélectionné de qradiobutton
  271. self.entree_principale_prog = u"Cours d'Arts Plastiques"
  272. print u"Entrée principale du programme :", self.entree_principale_prog
  273. # Cases à cocher pour l'entrée principale du programme
  274. self.caseEntr_2_Prog = QRadioButton(u"Hda")
  275. self.caseEntr_3_Prog = QRadioButton(u"EPI")
  276. self.caseEntr_4_Prog = QRadioButton(u"PEAC")
  277. # Cases à cocher pour la sélection du champ des pratiques plastiques
  278. self.case_prat_plast_1 = QCheckBox(u"Pratiques\nbidimensionnelles")
  279. self.case_prat_plast_2 = QCheckBox(u"Pratiques\ntridimensionnelles")
  280. self.case_prat_plast_3 = QCheckBox(u"Pratiques artistiques\nde l'image fixe et\nanimée")
  281. self.case_prat_plast_4 = QCheckBox(u"Pratiques de la création\nartistique numérique")
  282.  
  283. # Disposition dans la grille (stacked 2)
  284. grid_1.addWidget(label_questionnement, 0, 0)
  285. grid_1.addWidget(self.texte_questionnement, 0, 1, 1, 4)
  286. grid_1.addWidget(label_que_vont_app_eleves, 1, 0)
  287. grid_1.addWidget(self.texte_que_vont_app_eleves, 1, 1, 1, 4)
  288. grid_1.addWidget(label_question_denseignement, 2, 0)
  289. grid_1.addWidget(self.texte_question_denseignement, 2, 1, 1, 4)
  290.  
  291. grid_2.addWidget(label_entree_princ_prog, 3, 0)
  292. grid_2.addWidget(self.caseEntr_1_Prog, 3, 1)
  293. grid_2.addWidget(self.caseEntr_2_Prog, 3, 2)
  294. grid_2.addWidget(self.caseEntr_3_Prog, 3, 3)
  295. grid_2.addWidget(self.caseEntr_4_Prog, 3, 4)
  296.  
  297. grid_3.addWidget(label_champ_pratiq_plast, 4, 0)
  298. grid_3.addWidget(self.case_prat_plast_1, 4, 1)
  299. grid_3.addWidget(self.case_prat_plast_2, 4, 2)
  300. grid_3.addWidget(self.case_prat_plast_3, 4, 3)
  301. grid_3.addWidget(self.case_prat_plast_4, 4, 4)
  302. # ============================================= #
  303. groupe_1.setLayout(grid_1)
  304. groupe_2.setLayout(grid_2)
  305. groupe_3.setLayout(grid_3)
  306.  
  307. layout = QGridLayout()
  308. layout.setSpacing(4)
  309. layout.addWidget(groupe_1, 0, 0)
  310. layout.addWidget(groupe_2, 1, 0)
  311. layout.addWidget(groupe_3, 2, 0)
  312. # ============================================= #
  313.  
  314. # Le QStackedWidget englobe et fait apparaître la grille
  315. # ici la grille layout (qui elle-même englobe le QGroupBox)
  316. self.w_menu_stack_2.setLayout(layout)
  317.  
  318. #
  319. self.liste_champ_prat_plast = [0, 0, 0, 0]
  320.  
  321. # ==========================================
  322. # Signaux
  323. # ==========================================
  324. # Les cases à cocher QRadioButton (utilisation de lambda
  325. # car il y a un argument dans la fonction appelée)
  326. self.caseEntr_1_Prog.toggled.connect(lambda:self.entreePrincipaleProg(self.caseEntr_1_Prog))
  327. self.caseEntr_2_Prog.toggled.connect(lambda:self.entreePrincipaleProg(self.caseEntr_2_Prog))
  328. self.caseEntr_3_Prog.toggled.connect(lambda:self.entreePrincipaleProg(self.caseEntr_3_Prog))
  329. self.caseEntr_4_Prog.toggled.connect(lambda:self.entreePrincipaleProg(self.caseEntr_4_Prog))
  330. #
  331. self.texte_questionnement.textChanged.connect(self.changements_phase_2)
  332. self.texte_que_vont_app_eleves.textChanged.connect(self.changements_phase_2)
  333. self.texte_question_denseignement.textChanged.connect(self.changements_phase_2)
  334. #
  335. # Les cases à cocher QCheckBox (utilisation de lambda
  336. # car il y a un argument dans la fonction appelée)
  337. # 1 Fonction pour chaque QCheckBox
  338. self.case_prat_plast_1.toggled.connect(lambda:self.casePratPlast_1(self.case_prat_plast_1))
  339. self.case_prat_plast_2.toggled.connect(lambda:self.casePratPlast_2(self.case_prat_plast_2))
  340. self.case_prat_plast_3.toggled.connect(lambda:self.casePratPlast_3(self.case_prat_plast_3))
  341. self.case_prat_plast_4.toggled.connect(lambda:self.casePratPlast_4(self.case_prat_plast_4))
  342.  
  343. def stack_phase_3(self) :
  344. '''
  345. '''
  346. # Widgets groupés
  347. groupe_1 = QGroupBox()
  348. groupe_2 = QGroupBox()
  349. groupe_3 = QGroupBox()
  350.  
  351. self.grille_1_stack_3 = QGridLayout()
  352. self.grille_1_stack_3.setSpacing(0)
  353. self.grille_2_stack_3 = QGridLayout()
  354. self.grille_2_stack_3.setSpacing(60)
  355. self.grille_3_stack_3 = QGridLayout()
  356. self.grille_3_stack_3.setSpacing(0)
  357.  
  358. # ==========================================
  359. # Labels Stacked 3
  360. # ==========================================
  361. self.label_annonce_vocab = QLabel(u"Pour ajouter (et éditer) des mots de vocabulaire, cliquez sur le bouton <b>Ajouter une ligne de vocabulaire</b>")
  362. label_mot_vocabulaire = QLabel(u"Mots de vocabulaire")
  363. label_definitions = QLabel(u"Définitions")
  364. # ==========================================
  365. # Widgets Stacked 3
  366. # ==========================================
  367. # Bouton pour ajouter une ligne pour les mots de vocabulaire
  368. self.bouton_ajout_ligne_vocabulaire = QPushButton(u"Ajouter une ligne de vocabulaire")
  369. # Bouton pour supprimer une ligne pour les mots de vocabulaire
  370. self.bouton_supprime_ligne_vocabulaire = QPushButton(u"Supprimer une ligne de vocabulaire")
  371.  
  372. # Disposition dans la grille (stacked 3)
  373. self.grille_1_stack_3.addWidget(self.bouton_ajout_ligne_vocabulaire, 0, 0)
  374. self.grille_1_stack_3.addWidget(self.bouton_supprime_ligne_vocabulaire, 0, 1)
  375.  
  376. self.grille_2_stack_3.addWidget(label_mot_vocabulaire, 0, 0, 1, 1)
  377. self.grille_2_stack_3.addWidget(label_definitions, 0, 1, 1, 1)
  378.  
  379. #self.grille_3_stack_3.addWidget(self.label_annonce_vocab, 0, 0)
  380. # ============================================= #
  381. groupe_1.setLayout(self.grille_1_stack_3)
  382. groupe_2.setLayout(self.grille_2_stack_3)
  383. groupe_3.setLayout(self.grille_3_stack_3)
  384.  
  385. layout = QGridLayout()
  386. layout.setSpacing(0)
  387. layout.addWidget(groupe_1, 0, 0)
  388. layout.addWidget(groupe_2, 1, 0)
  389. layout.addWidget(groupe_3, 2, 0)
  390. # ============================================= #
  391.  
  392. # Le QStackedWidget englobe et fait apparaître la grille
  393. # ici la grille layout (qui elle-même englobe le QGroupBox)
  394. self.w_menu_stack_3.setLayout(layout)
  395.  
  396. # ==========================================
  397. # Signaux
  398. # ==========================================
  399. # Les boutons ajoutent des lignes de vocabulaire et peuvent aussi les enlever
  400. self.bouton_ajout_ligne_vocabulaire.clicked.connect(self.ajouter_un_mot_vocab)
  401. self.bouton_supprime_ligne_vocabulaire.clicked.connect(self.supprimer_un_mot_vocab)
  402.  
  403. def stack_phase_4(self) :
  404. '''
  405. '''
  406. # Widgets groupés
  407. groupe_1 = QGroupBox()
  408. groupe_2 = QGroupBox()
  409. groupe_3 = QGroupBox()
  410.  
  411. self.grille_1_stack_4 = QGridLayout()
  412. self.grille_1_stack_4.setSpacing(0)
  413. self.grille_2_stack_4 = QGridLayout()
  414. self.grille_2_stack_4.setSpacing(0)
  415. self.grille_3_stack_4 = QGridLayout()
  416. self.grille_3_stack_4.setSpacing(0)
  417.  
  418. # ==========================================
  419. # Labels Stacked 4
  420. # ==========================================
  421. label_annonce_questions = QLabel(u"Pour ajouter (et éditer) des questions posées aux élèves, cliquez sur le bouton <b>Ajouter une ligne de question posée aux élèves</b>")
  422. label_questions = QLabel(u"Questions posées aux élèves")
  423. #label_definitions = QLabel(u"Définitions")
  424. # ==========================================
  425. # Widgets Stacked 4
  426. # ==========================================
  427. # Bouton pour ajouter une ligne de question posée aux élèves
  428. self.bouton_ajout_ligne_question = QPushButton(u"Ajouter une ligne de question posée aux élèves")
  429. # Bouton pour supprimer une ligne de question posée aux élèves
  430. self.bouton_supprime_ligne_question = QPushButton(u"Supprimer une ligne de question posée aux élèves")
  431.  
  432. # Disposition dans la grille (stacked 4)
  433. self.grille_1_stack_4.addWidget(self.bouton_ajout_ligne_question, 0, 0)
  434. self.grille_1_stack_4.addWidget(self.bouton_supprime_ligne_question, 0, 1)
  435.  
  436. self.grille_2_stack_4.addWidget(label_questions, 0, 0, 1, 1)
  437.  
  438. #self.grille_3_stack_3.addWidget(label_annonce_questions, 0, 0)
  439. # ============================================= #
  440. groupe_1.setLayout(self.grille_1_stack_4)
  441. groupe_2.setLayout(self.grille_2_stack_4)
  442. groupe_3.setLayout(self.grille_3_stack_4)
  443.  
  444. layout = QGridLayout()
  445. layout.setSpacing(0)
  446. layout.addWidget(groupe_1, 0, 0)
  447. layout.addWidget(groupe_2, 1, 0)
  448. layout.addWidget(groupe_3, 2, 0)
  449. # ============================================= #
  450.  
  451. # Le QStackedWidget englobe et fait apparaître la grille
  452. # ici la grille layout (qui elle-même englobe le QGroupBox)
  453. self.w_menu_stack_4.setLayout(layout)
  454.  
  455. # ==========================================
  456. # Signaux
  457. # ==========================================
  458. # Les boutons ajoutent des lignes de questions et peuvent aussi les enlever
  459. self.bouton_ajout_ligne_question.clicked.connect(self.ajouter_une_question)
  460. self.bouton_supprime_ligne_question.clicked.connect(self.supprimer_la_question)
  461.  
  462. def stack_phase_5(self) :
  463. '''
  464. '''
  465. # Widgets groupés
  466. groupe_1 = QGroupBox()
  467. groupe_2 = QGroupBox()
  468. groupe_3 = QGroupBox()
  469.  
  470. self.grille_1_stack_5 = QGridLayout()
  471. self.grille_1_stack_5.setSpacing(0)
  472. self.grille_2_stack_5 = QGridLayout()
  473. self.grille_2_stack_5.setSpacing(174)
  474. self.grille_3_stack_5 = QGridLayout()
  475. self.grille_3_stack_5.setSpacing(0)
  476.  
  477. # ==========================================
  478. # Labels Stacked 5
  479. # ==========================================
  480. self.label_annonce_ref_art = QLabel(u"Pour ajouter (et éditer) des références artistiques, cliquez sur le bouton <b>Ajouter une référence artistique</b>")
  481. label_chem_img_ref_art = QLabel(u"Chemin de l'image")
  482. label_com_ref_art = QLabel(u"Commentaire sur l'oeuvre")
  483. label_com_ref_art.setGeometry(QRect(500, 500, 500, 100))
  484. #label_com_ref_art.resize(1000, 30)
  485. label_charg_img_ref_art = QLabel(u"Charger image")
  486. # ==========================================
  487. # Widgets Stacked 5
  488. # ==========================================
  489. # Bouton pour ajouter une ligne pour les références artistiques
  490. self.bouton_ajout_ligne_ref_art = QPushButton(u"Ajouter une référence artistique")
  491. # Bouton pour supprimer une ligne pour les références artistiques
  492. self.bouton_supprime_ligne_ref_art = QPushButton(u"Supprimer une référence artistique")
  493. '''
  494. # La 1ère ligne de QTextEdit
  495. self.texte_chem_img_ref_art = QTextEdit()
  496. self.texte_chem_img_ref_art.setMaximumHeight(40)
  497. self.texte_chem_img_ref_art.setMinimumHeight(40)
  498. self.texte_chem_img_ref_art.setMaximumWidth(180)
  499. self.texte_chem_img_ref_art.setMinimumWidth(180)
  500. self.texte_com_ref_art = QTextEdit()
  501. self.texte_com_ref_art.setMaximumHeight(54)
  502. self.texte_com_ref_art.setMinimumHeight(54)
  503. self.bouton_charg_img_ref_art = QPushButton()
  504. '''
  505.  
  506. # Disposition dans la grille (stacked 5)
  507. self.grille_1_stack_5.addWidget(self.bouton_ajout_ligne_ref_art, 0, 0)
  508. self.grille_1_stack_5.addWidget(self.bouton_supprime_ligne_ref_art, 0, 1)
  509.  
  510. self.grille_2_stack_5.addWidget(label_chem_img_ref_art, 0, 0, 1, 1)
  511. self.grille_2_stack_5.addWidget(label_com_ref_art, 0, 1, 1, 1)
  512. self.grille_2_stack_5.addWidget(label_charg_img_ref_art, 0, 2, 1, 1)
  513.  
  514. #self.grille_3_stack_5.addWidget(self.label_annonce_ref_art, 0, 0)
  515. # ============================================= #
  516. groupe_1.setLayout(self.grille_1_stack_5)
  517. groupe_2.setLayout(self.grille_2_stack_5)
  518. groupe_3.setLayout(self.grille_3_stack_5)
  519.  
  520. layout = QGridLayout()
  521. layout.setSpacing(0)
  522. layout.addWidget(groupe_1, 0, 0)
  523. layout.addWidget(groupe_2, 1, 0)
  524. layout.addWidget(groupe_3, 2, 0)
  525. # ============================================= #
  526.  
  527. # Le QStackedWidget englobe et fait apparaître la grille
  528. # ici la grille layout (qui elle-même englobe le QGroupBox)
  529. self.w_menu_stack_5.setLayout(layout)
  530.  
  531. # ==========================================
  532. # Signaux
  533. # ==========================================
  534. # Les boutons ajoutent des lignes pour les références artistiques et peuvent aussi les enlever
  535. self.bouton_ajout_ligne_ref_art.clicked.connect(self.ajouter_ref_artistique)
  536. self.bouton_supprime_ligne_ref_art.clicked.connect(self.supprimer_ref_artistique)
  537.  
  538. def caseEtCombo(self, c):
  539. ''' Fonction de récupération des valeurs des
  540. cases à cocher pour le niveau de classe '''
  541. # Sélection des classes et on montre ou on cache
  542. # les combos (et items contenus) des compétences
  543. # travaillées
  544. if c.isChecked() == True :
  545. self.classe = unicode(c.text()[0])
  546. else : self.classe = 0
  547. if self.classe == u"6" :
  548. print "Niveau de classe :", self.classe
  549. elif self.classe in [u'5', u'4', u'3']:
  550. # Drapeau (quand l'utilisateur n'a
  551. # pas sélectionné de qradiobutton)
  552. print "Niveau de classe :", self.classe
  553.  
  554. def changements_phase_1(self) :
  555. '''
  556. '''
  557. # Récup des données
  558. try : self.duree = unicode(self.ligne_duree.text())
  559. except : self.duree = u''
  560. try : self.sequence = unicode(self.ligne_sequence.text())
  561. except : self.sequence = u''
  562. try : self.progression = unicode(self.ligne_progression.text())
  563. except : self.progression = u''
  564. try : self.incitation = unicode(self.ligne_incitation.text())
  565. except : self.incitation = u''
  566. try : self.demande = unicode(self.texte_demande.toPlainText())
  567. except : self.demande = u''
  568. try : self.notions = unicode(self.texte_notions_abordees.toPlainText())
  569. except : self.notions = u''
  570. try : self.consignes = unicode(self.texte_consignes.toPlainText())
  571. except : self.consignes = u''
  572. try : self.contraintes = unicode(self.texte_contraintes.toPlainText())
  573. except : self.contraintes = u''
  574.  
  575. # Si le niveau de classe (self.classe à 0) n'est pas sélectionné, une boîte de dialogue nous en informe
  576. if self.classe == 0 :
  577. message = QMessageBox.warning(self, u'Message', u"Vous devez sélectionner un niveau de classe avant de continuer !!!", QMessageBox.Ok)
  578.  
  579. #
  580. try :
  581. self.liste_donnees.append([self.classe, self.duree, self.sequence, self.progression, self.incitation, self.demande, self.notions, self.consignes, self.contraintes])
  582. #
  583. self.liste_donnees_finales = self.liste_donnees[len(self.liste_donnees)-1]
  584. except : pass
  585.  
  586. #
  587. print "self.liste_donnees_finales", self.liste_donnees_finales
  588.  
  589. def entreePrincipaleProg(self, c):
  590. ''' Fonction de récupération des valeurs des
  591. cases à cocher pour l'entrée principale du programme '''
  592. if c.isChecked() == True :
  593. self.entree_principale_prog = unicode(c.text())
  594. if self.entree_principale_prog == u"Cours d'Arts\nPlastiques" :
  595. print u"Entrée principale du programme :", self.entree_principale_prog
  596. elif self.entree_principale_prog in [u"Hda", u"EPI", u"PEAC"]:
  597. # Drapeau (quand l'utilisateur n'a
  598. # pas sélectionné de qradiobutton)
  599. print u"Entrée principale du programme :", self.entree_principale_prog
  600.  
  601. #
  602. try :
  603. self.liste_donnees.append([self.classe, self.duree, self.sequence, self.progression, self.incitation, self.demande, \
  604. self.notions, self.consignes, self.contraintes, self.entree_principale_prog, self.questionnement, \
  605. self.que_vont_app_eleves, self.question_denseignement, self.liste_champ_prat_plast])
  606. #
  607. self.liste_donnees_finales = self.liste_donnees[len(self.liste_donnees)-1]
  608. except : pass
  609.  
  610. #
  611. print "self.liste_donnees_finales", self.liste_donnees_finales
  612.  
  613. def changements_phase_2(self) :
  614. '''
  615. '''
  616. # Récup des données
  617. try : self.questionnement = unicode(self.texte_questionnement.toPlainText())
  618. except : self.questionnement = u''
  619. try : self.que_vont_app_eleves = unicode(self.texte_que_vont_app_eleves.toPlainText())
  620. except : self.que_vont_app_eleves = u''
  621. try : self.question_denseignement = unicode(self.texte_question_denseignement.toPlainText())
  622. except : self.question_denseignement = u''
  623.  
  624. # Si le niveau de classe (self.classe à 0) n'est pas sélectionné, une boîte de dialogue nous en informe
  625. if self.classe == 0 :
  626. message = QMessageBox.warning(self, u'Message', u"Vous devez sélectionner un niveau de classe avant de continuer !!!", QMessageBox.Ok)
  627.  
  628. #
  629. try :
  630. self.liste_donnees.append([self.classe, self.duree, self.sequence, self.progression, self.incitation, self.demande, \
  631. self.notions, self.consignes, self.contraintes, self.entree_principale_prog, self.questionnement, \
  632. self.que_vont_app_eleves, self.question_denseignement])
  633. #
  634. self.liste_donnees_finales = self.liste_donnees[len(self.liste_donnees)-1]
  635. except : pass
  636.  
  637. #
  638. print "self.liste_donnees_finales", self.liste_donnees_finales
  639.  
  640. # ==============================================================================
  641. ''' Fonctions de récupération des valeurs. Cases
  642. à cocher pour le champ des pratiques plastiques '''
  643.  
  644. def casePratPlast_1(self, c):
  645. if c.isChecked() == True :
  646. self.prat_plast = unicode(c.text())
  647. if self.prat_plast == u"Pratiques\nbidimensionnelles" :
  648. self.prat_plast = u"[x] Pratiques bidimensionnelles"
  649. #
  650. self.liste_champ_prat_plast[0] = self.prat_plast
  651. #
  652. try :
  653. self.liste_donnees.append([self.classe, self.duree, self.sequence, self.progression, self.incitation, self.demande, \
  654. self.notions, self.consignes, self.contraintes, self.entree_principale_prog, self.questionnement, \
  655. self.que_vont_app_eleves, self.question_denseignement, self.liste_champ_prat_plast])
  656. #
  657. self.liste_donnees_finales = self.liste_donnees[len(self.liste_donnees)-1]
  658. except : pass
  659.  
  660. #
  661. print "self.liste_donnees_finales", self.liste_donnees_finales
  662.  
  663. def casePratPlast_2(self, c):
  664. if c.isChecked() == True :
  665. self.prat_plast = unicode(c.text())
  666. if self.prat_plast == u"Pratiques\ntridimensionnelles" :
  667. self.prat_plast = u"[x] Pratiques tridimensionnelles"
  668. self.liste_champ_prat_plast[1] = self.prat_plast
  669. #
  670. try :
  671. self.liste_donnees.append([self.classe, self.duree, self.sequence, self.progression, self.incitation, self.demande, \
  672. self.notions, self.consignes, self.contraintes, self.entree_principale_prog, self.questionnement, \
  673. self.que_vont_app_eleves, self.question_denseignement, self.liste_champ_prat_plast])
  674. #
  675. self.liste_donnees_finales = self.liste_donnees[len(self.liste_donnees)-1]
  676. except : pass
  677.  
  678. #
  679. print "self.liste_donnees_finales", self.liste_donnees_finales
  680.  
  681. def casePratPlast_3(self, c):
  682. if c.isChecked() == True :
  683. self.prat_plast = unicode(c.text())
  684. if self.prat_plast == u"Pratiques artistiques\nde l'image fixe et\nanimée" :
  685. self.prat_plast = u"[x] Pratiques artistiques de l'image fixe et animée"
  686. self.liste_champ_prat_plast[2] = self.prat_plast
  687. #
  688. try :
  689. self.liste_donnees.append([self.classe, self.duree, self.sequence, self.progression, self.incitation, self.demande, \
  690. self.notions, self.consignes, self.contraintes, self.entree_principale_prog, self.questionnement, \
  691. self.que_vont_app_eleves, self.question_denseignement, self.liste_champ_prat_plast])
  692. #
  693. self.liste_donnees_finales = self.liste_donnees[len(self.liste_donnees)-1]
  694. except : pass
  695.  
  696. #
  697. print "self.liste_donnees_finales", self.liste_donnees_finales
  698.  
  699. def casePratPlast_4(self, c):
  700. if c.isChecked() == True :
  701. self.prat_plast = unicode(c.text())
  702. if self.prat_plast == u"Pratiques de la création\nartistique numérique" :
  703. self.prat_plast = u"[x] Pratiques de la création artistique numérique"
  704. self.liste_champ_prat_plast[3] = self.prat_plast
  705. #
  706. try :
  707. self.liste_donnees.append([self.classe, self.duree, self.sequence, self.progression, self.incitation, self.demande, \
  708. self.notions, self.consignes, self.contraintes, self.entree_principale_prog, self.questionnement, \
  709. self.que_vont_app_eleves, self.question_denseignement, self.liste_champ_prat_plast])
  710. #
  711. self.liste_donnees_finales = self.liste_donnees[len(self.liste_donnees)-1]
  712. except : pass
  713.  
  714. #
  715. print "self.liste_donnees_finales", self.liste_donnees_finales
  716. # ==============================================================================
  717.  
  718. def ajouter_un_mot_vocab(self) :
  719. """
  720. Merci à ekhumoro de m'avoir aidé ici pour la création des
  721. lignes de widgets ; voir la discussion ici sur stackoverflow :
  722. https://stackoverflow.com/questions/47380658/how-to-add-rows-of-widgets-after-deletion-in-a-qgridlayout
  723. """
  724. #
  725. r = len(self.liste_mots_vocabulaire)
  726. #if r >= 0 : self.label_annonce_vocab.hide()
  727. # Création des QTextEdit
  728. self.dico_vocab_mot[r] = QTextEdit()
  729. self.dico_vocab_def[r] = QTextEdit()
  730. self.dico_vocab_mot[r].setMaximumWidth(180)
  731. self.dico_vocab_mot[r].setMinimumWidth(180)
  732. self.dico_vocab_mot[r].setMaximumHeight(54)
  733. self.dico_vocab_mot[r].setMinimumHeight(54)
  734. self.dico_vocab_def[r].setMaximumHeight(54)
  735. self.dico_vocab_def[r].setMinimumHeight(54)
  736. # Conditions de redimensionnement
  737. if r > 5 :
  738. self.dico_vocab_mot[r].setMaximumHeight(34)
  739. self.dico_vocab_mot[r].setMinimumHeight(34)
  740. self.dico_vocab_def[r].setMaximumHeight(34)
  741. self.dico_vocab_def[r].setMinimumHeight(34)
  742. # Répartition dans la grille
  743. self.grille_3_stack_3.addWidget(self.dico_vocab_mot[r], r, 0)
  744. self.grille_3_stack_3.addWidget(self.dico_vocab_def[r], r, 1)
  745. # Ecriture des n°s de lignes dans la partie mots de vocabulaire
  746. self.dico_vocab_mot[r].setText(str(r+1)+'. ')
  747. # Les données sont introduites dans une liste
  748. self.liste_mots_vocabulaire.append([self.dico_vocab_mot[r], self.dico_vocab_def[r]])
  749. # =====================================================
  750. # Signaux
  751. self.dico_vocab_mot[r].textChanged.connect(self.changements_phase_3)
  752. self.dico_vocab_def[r].textChanged.connect(self.changements_phase_3)
  753. # =====================================================
  754.  
  755. def supprimer_un_mot_vocab(self) :
  756. """
  757. Merci à ekhumoro de m'avoir aidé ici pour la suppression des
  758. lignes de widgets ; voir la discussion ici sur stackoverflow :
  759. https://stackoverflow.com/questions/47380658/how-to-add-rows-of-widgets-after-deletion-in-a-qgridlayout
  760. """
  761. # On repère l'indice
  762. row = len(self.liste_mots_vocabulaire) - 1
  763. # Si l'indice de la ligne st supérieur ou egal à 0
  764. if row >= 0:
  765. for column in range(self.grille_3_stack_3.columnCount()):
  766. # On repère à quelle position se trouve l'item
  767. item = self.grille_3_stack_3.itemAtPosition(row, column)
  768. if item is not None:
  769. # On supprime l'item (le widget
  770. # correspondant est supprimé)
  771. item.widget().deleteLater()
  772. # On vide (à chaque passage) l'indice
  773. # correspondant dans la liste
  774. del self.liste_mots_vocabulaire[row]
  775. # On vide aussi à l'indice
  776. # correspondant chaque dictionnaire
  777. del self.dico_vocab_mot[row]
  778. del self.dico_vocab_def[row]
  779.  
  780. def ajouter_une_question(self) :
  781. '''
  782. '''
  783. #
  784. r = len(self.liste_questions_pos_elev)
  785. #if r >= 0 : self.label_annonce_question.hide()
  786. self.dico_question_pos_elev[r] = QTextEdit()
  787. #self.dico_vocab_def[r] = QTextEdit()
  788. self.dico_question_pos_elev[r].setMaximumHeight(54)
  789. self.dico_question_pos_elev[r].setMinimumHeight(54)
  790. if r > 5 :
  791. self.dico_question_pos_elev[r].setMaximumHeight(34)
  792. self.dico_question_pos_elev[r].setMinimumHeight(34)
  793. self.grille_3_stack_4.addWidget(self.dico_question_pos_elev[r], r, 0)
  794. self.dico_question_pos_elev[r].setText(str(r+1)+'. ')
  795. self.liste_questions_pos_elev.append(self.dico_question_pos_elev[r])
  796. # =====================================================
  797. # Signal
  798. self.dico_question_pos_elev[r].textChanged.connect(self.changements_phase_4)
  799. # =====================================================
  800.  
  801. def supprimer_la_question(self) :
  802. '''
  803. '''
  804. row = len(self.liste_questions_pos_elev) - 1
  805. if row >= 0:
  806. for column in range(self.grille_3_stack_4.columnCount()):
  807. item = self.grille_3_stack_4.itemAtPosition(row, column)
  808. if item is not None:
  809. item.widget().deleteLater()
  810. del self.liste_questions_pos_elev[row]
  811. del self.dico_question_pos_elev[row]
  812. #del self.dico_vocab_def[row]
  813.  
  814. def ajouter_ref_artistique(self) :
  815. '''
  816. '''
  817. #
  818. r = len(self.liste_ref_artistiques)
  819. #if r >= 0 : self.label_annonce_vocab.hide()
  820. # Création des QTextEdit
  821. self.dico_chem_ref_art[r] = QTextEdit()
  822. self.dico_com_ref_art[r] = QTextEdit()
  823. self.dico_chem_ref_art[r].setMaximumWidth(170)
  824. self.dico_chem_ref_art[r].setMinimumWidth(170)
  825. self.dico_chem_ref_art[r].setMaximumHeight(84)
  826. self.dico_chem_ref_art[r].setMinimumHeight(84)
  827. self.dico_com_ref_art[r].setMaximumWidth(398)
  828. self.dico_com_ref_art[r].setMinimumWidth(398)
  829. self.dico_com_ref_art[r].setMaximumHeight(84)
  830. self.dico_com_ref_art[r].setMinimumHeight(84)
  831. # Création des boutons de chargement
  832. self.dico_bout_charg_ref_art[r] = QPushButton(u"Ouvrir ref {}".format(r+1))
  833. '''
  834. # Conditions de redimensionnement
  835. if r > 5 :
  836. self.dico_vocab_mot[r].setMaximumHeight(34)
  837. self.dico_vocab_mot[r].setMinimumHeight(34)
  838. self.dico_vocab_def[r].setMaximumHeight(34)
  839. self.dico_vocab_def[r].setMinimumHeight(34)
  840. '''
  841. # Répartition dans la grille
  842. self.grille_3_stack_5.addWidget(self.dico_chem_ref_art[r], r, 0)
  843. self.grille_3_stack_5.addWidget(self.dico_com_ref_art[r], r, 1)
  844. self.grille_3_stack_5.addWidget(self.dico_bout_charg_ref_art[r], r, 2)
  845. # Ecriture des n°s de lignes dans la partie mots de vocabulaire
  846. self.dico_chem_ref_art[r].setText(str(r+1)+'. ')
  847. # Les données sont introduites dans une liste
  848. self.liste_ref_artistiques.append([self.dico_chem_ref_art[r], self.dico_com_ref_art[r], self.dico_bout_charg_ref_art[r]])
  849. # =====================================================
  850. # Signaux
  851. # ---------- Récup des données textuelles
  852. self.dico_chem_ref_art[r].textChanged.connect(self.changements_phase_5)
  853. self.dico_com_ref_art[r].textChanged.connect(self.changements_phase_5)
  854. # ---------- Récup du libellé du bouton sélectionné par l'utilisateur
  855. self.dico_bout_charg_ref_art[r].released.connect(self.libelle_bouton_ref_art)
  856. # =====================================================
  857.  
  858. def supprimer_ref_artistique(self) :
  859. '''
  860. '''
  861. row = len(self.liste_ref_artistiques) - 1
  862. if row >= 0:
  863. for column in range(self.grille_3_stack_5.columnCount()):
  864. item = self.grille_3_stack_5.itemAtPosition(row, column)
  865. if item is not None:
  866. item.widget().deleteLater()
  867. del self.liste_ref_artistiques[row]
  868. del self.dico_chem_ref_art[row]
  869. del self.dico_com_ref_art[row]
  870. del self.dico_bout_charg_ref_art[row]
  871.  
  872. def changements_phase_3(self) :
  873. """
  874. """
  875. #self.liste_mots_vocabulaire_finale = [[unicode(vocab[0].toPlainText()), unicode(vocab[1].toPlainText())] for vocab in self.liste_mots_vocabulaire if unicode(vocab[0].toPlainText()) != u'' and unicode(vocab[1].toPlainText()) != u'']
  876. self.liste_mots_vocabulaire_finale = [[unicode(vocab[0].toPlainText()), unicode(vocab[1].toPlainText())] for vocab in self.liste_mots_vocabulaire]
  877.  
  878. print
  879. print "self.liste_mots_vocabulaire_finale :"
  880. print
  881. print self.liste_mots_vocabulaire_finale
  882. print
  883.  
  884. def changements_phase_4(self) :
  885. """
  886. """
  887. self.liste_questions_pos_elev_finale = [unicode(quest.toPlainText()) for quest in self.liste_questions_pos_elev]
  888.  
  889. print
  890. print "self.liste_questions_pos_elev_finale :"
  891. print
  892. print self.liste_questions_pos_elev_finale
  893. print
  894.  
  895. def changements_phase_5(self) :
  896. """
  897. """
  898. self.liste_ref_artistiques_finale = [[unicode(refart[0].toPlainText()), unicode(refart[1].toPlainText()), unicode(refart[2])] for refart in self.liste_ref_artistiques]
  899.  
  900. print
  901. print "self.liste_ref_artistiques_finale :"
  902. print
  903. print self.liste_ref_artistiques_finale
  904. print
  905.  
  906. def libelle_bouton_ref_art(self) :
  907. '''
  908. Sélectionner l'id du bouton pressé en vue de
  909. l'affichage du chemin de l'image sélectionnée
  910. dans le QTextEdit dédié
  911. '''
  912.  
  913. #
  914. message_bouton_ref_art = self.sender()
  915.  
  916. # Le texte du bouton (par ex pour le bouton n°2) est
  917. # de la forme : Ouvrir ref 2
  918. texte_bouton = message_bouton_ref_art.text()
  919.  
  920. # On ne sélectionne que le texte comprenant le numéro
  921. # du bouton
  922. numero_bouton = texte_bouton.right(2) # Lecture à partir de la droite
  923.  
  924. # Si il y a un espace ds la sélection, c'est à dire,
  925. # par exemple, pour le 3ème bouton on obtiendra " 3",
  926. # ... si il y 10 boutons, on aura "10" (on se laisse
  927. # la possibilité de pouvoir sélectionner de 1 à 99
  928. # boutons)
  929. if numero_bouton[0:1] == " ": numero_bouton = numero_bouton[1:2]
  930.  
  931. # Le numéro du bouton prend le type integer
  932. numero_bouton = int(numero_bouton)
  933.  
  934. # Attribution de l'indice du bouton
  935. i = numero_bouton - 1
  936.  
  937. # =====================================================
  938. # Signal
  939. # ---------- Affichage des images/vignettes et chemins images
  940. self.dico_bout_charg_ref_art[i].clicked.connect(lambda: self.ouvrir_image_boite_ref_art(i))
  941. # =====================================================
  942.  
  943. def ouvrir_image_boite_ref_art(self, n) :
  944. ''' Fonction pour la boîte de dialogue d'ouverture
  945. pour charger les différentes oeuvres (références artistiques) '''
  946.  
  947. # La boîte
  948. ouv_fichier = QFileDialog.getOpenFileName(self, 'Ouvrir une image', os.path.expanduser('~'), 'Images (*.jpg *.jpeg *.JPG *.JPEG *.png *.gif)')
  949.  
  950. # Récup du chemin et nom de fichier
  951. chemin_fichier_ref_art = unicode(ouv_fichier)
  952.  
  953. # === Redimensionnnement de l'image pour affichage dans le QTextEdit ======
  954. # Largeur de la future vignette
  955. nouv_w_1 = 120
  956. # Ouverture de l'image
  957. obImg_1 = Image.open(chemin_fichier_ref_art)
  958. # Recup dimensions de l'image 1)
  959. w_1, h_1 = obImg_1.size
  960. # Calcul du ratio de l'image 1)
  961. ratio_1 = float(w_1)/float(h_1)
  962. # Calcul de future hauteur avec les dimensions donnees par l'utilisateur
  963. calcHauteur_img_1 = int(float(nouv_w_1)/ratio_1)
  964. # =========================================================================
  965.  
  966. # Affichage de l'image dans le QTextEdit
  967. self.dico_chem_ref_art[n].setHtml('<center><img src="{}" width="{}" height="{}" title="{}" /></center><h6><b>{}</b></h6>'.format(chemin_fichier_ref_art, nouv_w_1, calcHauteur_img_1, chemin_fichier_ref_art, chemin_fichier_ref_art))
  968.  
  969. # La liste finale des données est réactualisée avec les
  970. # nouvelles données (le chemin et nom de l'image chargée)
  971. del self.liste_ref_artistiques_finale[n][0]
  972. self.liste_ref_artistiques_finale[n].insert(0, chemin_fichier_ref_art)
  973.  
  974. def affiche_phases(self,i):
  975. self.stack.setCurrentIndex(i)
  976.  
  977. if __name__ == '__main__':
  978. app = QApplication(sys.argv)
  979. matable = EssaiQStackedWidget_Seq_Prof()
  980. matable.show()
  981. app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement