bonjour a tous,
Je poste ce billet car je suis perdu malgré toutes mes recherches je ne trouve pas comment faire. je souhaiterai faire une petite interface de sondage avec une question et un bouton radio a valider ou pas. Mais quand je clique sur le buttonradio je n'arrive pas a trouver le bon parent pour associer l'état a la question.L'interface est simple
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
45
46
47
48
49
50
51
 
from PyQt5.Qtcore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
 
class Test_fenetre(Qwidget):
    def __init__(self):
        super().__init__()
        self.lay_gen=QVBoxLayout(self)
        self.traitement_dataset_excel()
        self.ui_questionnaire()
        self.show()
 
    def traitement_dataset_excel(self):
        #ici je récupérè les données d'un fichier excel et je manipule une colonne df['thématique'] et une colonne['question']
        #je passe sur la déclaration qui n'apporte rien pour votre compréhension
 
    def etat_checkbox(self):
        #Ici je test le certains attributs suite a l'activation d'un checkbox
        print (f"parent du checkbox: {self.sender().parent().layout()}") #ça me donne la QVBoxLayout() qui contient le QHBoxLayout qui contient le QCheckBox
        print (f"autre parent: {self.sender().parent()}") #ca me donne le QGroupBox contenu dans le QVBoxLayout(self.lay_questionnaire)
 
    def ui_questionnaire(self):
        #ici je limite l'itération pour que ce soit plus rapide a comprendre et plus visible.Dans mon interface je pose un QScrollArea pour pouvoir voir toutes les questions classées dans chaque thématique
        for index in range(2):
            self.lay_questionnaire=QVBoxLayout()
            self.group=QGroupBox(str(index))
 
            #Ici aussi je limite l’itération a 2 questions pour plus de facilité
            for indey in range(2):
                self.lab=QLabel("question_"+str(indey))
               #Je crée un conteneur de QCheckBox pour donner une note(1 à 5) à la question 
               self.hlay_question=QHBoxLayout()
 
               #Je crée les QCheckBox dynamiquement et normalement selon le nombre de questions que j'ai a poser
               for indexy in range(3):
                   self.note=QCheckBox(str(indexy)):
                   self.note.clicked.connect(self.etat_checkbox)
                   self.hlay_question.addWidget(self.note)
 
               #Intégration de la question et du QHBoxLayout de QCheckBox dans le QVBoxLayout
               self.lay_questionnaire.addWidget(self.lab)
               self.lay_questionnaire.addLayout(self.hlay_question)
 
            #Intégration dans QVBoxLayout général
            self.group.setlayout(self.lay_questionnaire)
            self.lay_gen.addWidget(self.group)
 
app=QApllication([])
appli=Test_fenetre()
app.exec_()
L'idée c'est au fur et a mesure de l'activation d'un checbox, de valoriser un simple fichier txt comme étant une sauvegarde de l'état du questionnaire,au cas ou ça cracherait. Le problème est que je n'arrive pas a récupérer le parent du qcheckbox,ie le QHBoxLayout conteneur, donc je ne peux pas associer la question à un état True/False. J'arrive a récupérer les QHBoxLayout en passant par self.sender().parent().layout().children() qui me donne une liste des QHBoxLayout, mais impossible de facilement récupérer la question,dans un QLabel positionné au dessus, qui est associée au qcheckbox. J'ai l'intuition qu'il y a une méthode builtin pour faire ça mais je n'y arrive pas. Après j'ai réglé le problème avec une usine a gaz où je numérote les questions et les checkbox par setObjectName et ainsi par slicing je me débrouille pour l'association. Ça marche mais c'est totalement inélégant.

J'en appelle à la commu car je suis débutant et que je ne trouve pas la réponse.
Merci pour votre patience et votre aide