Bonsoir

J'utilise PyQt5. Dans une fenêtre, je veux créer des boutons dans une boucle sur une liste. À titre d'exemple, j'ai extrait de mon code le petit script suivant (je suis fatigué de l'emploi toujours croissant de l'anglais dans notre langue et c'est la raison pour laquelle j'ai opté ici pour le grec ancien, langue, certes morte, dont Donald ne doit même pas avoir jamais entendu parler)

À la prévisualisation du message, je constate que l'indentation (par tabulations) n'est pas reproduite

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# 

from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QWidget, QLabel,  QLineEdit,  QPushButton, QApplication
from PyQt5.QtWidgets import QHBoxLayout, QVBoxLayout, QMessageBox

class Κοινή(QtWidgets.QWidget):
	def __init__(ἁυτόν):
		super(Κοινή,ἁυτόν).__init__()
	def init(ἁυτόν):
		zc=QHBoxLayout(ἁυτόν)
		zc.addStretch()
		ἁυτόν.lesboutons=[('Quitter','quit', True), ('Auteurs', 'aut', True), ('Vocabulaire', 'vocab', False), ('Textes', 'texte', True) ]
		for tpl in ἁυτόν.lesboutons:
			btn=QPushButton(tpl[0])
			btn.setObjectName(tpl[1])
			btn.setEnabled(tpl[2])
			btn.clicked.connect(lambda : ἁυτόν.execut(tpl[1]))
			btn.clicked.connect(lambda cde=tpl[1] : ἁυτόν.execut(cde))			
			zc.addWidget(btn)
			zc.addStretch()
	def execut(ἁυτόν, cde):
		print(cde)
def afficher(ἁυτόν, ὄνομα, χωρίον=None):
	if χωρίον==None:
		χωρίον=(250,200,800,300)
	ἁυτόν.setGeometry(χωρίον[0],χωρίον[1],χωρίον[2],χωρίον[3])
	ἁυτόν.setWindowTitle(ὄνομα)
	ἁυτόν.show()
	
def main(args):
	app = QtWidgets.QApplication(args)
	application=Κοινή()
	application.init()
	afficher(application,'Κοινή', [300,150,300,250])
	app.exec()
	return 0

if __name__ == '__main__':
	import sys
	sys.exit(main(sys.argv))
Au lancement s'affiche bien la fenêtre avec les 4 boutons. Lorsque je clique sur l'un des trois boutons actifs, le premier signal envoyé vers 'execut' contient comme paramètre la valeur 'texte' et le deuxième signal la valeur 'False'.

J'ai bien trouvé dans la foire aux questions de Python la raison pour laquelle le paramètre du premier signal est toujours 'texte'. Mais je ne comprends absolument pas pourquoi le paramètre du deuxième signal est un bouléen.

Merci à quiconque pourra me mettre sur la voie.

Arbiel