2017-11-30 11 views
1

내 메시지에 첨부 된 스크린 샷과 같이 콤보 박스의 크기를 유지하면서 가로 스크롤 막대를 추가하여 (항목을 줄 끝까지 스크롤 할 수 있습니까?) 가능합니까? 그렇다면 어떻게?QComboBox에서 가로 스크롤을 허용합니다.

당해 정당의 코드 :

def ajouter_eval(self) : 
    ''' 
    ''' 
    # Liste des compétences travaillées en classe de 6ème 
    liste_c_t_6e = [u"Faites le choix de votre item ici.", u"(E1) Choisir, organiser et mobiliser des gestes, des outils et des matériaux en fonction des effets qu'ils produisent.", \ 
    u"(E2) Représenter le monde environnant ou donner forme à son imaginaire en explorant divers domaines (dessin, collage, modelage, sculpture, photographie, vidéo...).", \ 
    u"(E3) Rechercher une expression personnelle en s'éloignant des stéréotypes.", u"(E4) Intégrer l'usage des outils informatiques de travail de l'image et de recherche d'information, au service de la pratique plastique.", \ 
    u"(P1) Identifier les principaux outils et compétences nécessaires à la réalisation d'un projet artistique.", u"(P2) Se repérer dans les étapes de la réalisation d'une production plastique individuelle ou collective, anticiper les difficultés éventuelles.", \ 
    u"(P3) Identifier et assumer sa part de responsabilité dans un processus coopératif de création.", u"(P4) Adapter son projet en fonction des contraintes de réalisation et de la prise en compte du spectateur.", \ 
    u"(A1) Décrire et interroger à l'aide d'un vocabulaire spécifique ses productions plastiques, celles de ses pairs et des oeuvres d'art étudiées en classe.", \ 
    u"(A2) Justifier des choix pour rendre compte du cheminement qui conduit de l'intention à la réalisation.", \ 
    u"(A3) Formuler une expression juste de ses émotions, en prenant appui sur ses propres réalisations plastiques, celles des autres élèves et des oeuvres d'art.", \ 
    u"(R1) Repérer, pour les dépasser, certains a priori et stéréotypes culturels et artistiques.", \ 
    u"(R2) Identifier quelques caractéristiques qui inscrivent une oeuvre d'art dans une aire géographique ou culturelle et dans un temps historique, contemporain, proche ou lointain.", \ 
    u"(R3) Décrire des oeuvres d'art, en proposer une compréhension personnelle argumentée."] 
    # Liste des compétences travaillées pour les classes de 5ème, 4ème et 3ème 
    liste_c_t_5e4e3e = [u"Faites le choix de votre item ici.", u"(E1) Choisir, mobiliser et adapter des langages et des moyens plastiques variés en fonction de leurs effets dans une intention artistique en restant attentif à l'inattendu.", \ 
    u"(E2) S'approprier des questions artistiques en prenant appui sur une pratique artistique et réflexive.", u"(E3) Recourir à des outils numériques de captation et de réalisation à des fins de création artistique.", \ 
    u"(E4) Explorer l'ensemble des champs de la pratique plastique et leurs hybridations, notamment avec les pratiques numériques.", \ 
    u"(E5) Prendre en compte les conditions de la réception de sa production dès la démarche de création, en prêtant attention aux modalités de sa présentation, y compris numérique.", u"(E6) Exploiter des informations et de la documentation, notamment iconique, pour servir un projet de création.", \ 
    u"(P1) Concevoir, réaliser, donner à voir des projets artistiques, individuels ou collectifs.", u"(P2) Mener à terme une production individuelle dans le cadre d'un projet accompagné par le professeur.", \ 
    u"(P3) Se repérer dans les étapes de la réalisation d'une production plastique et en anticiper des difficultés éventuelles.", u"(P4) Faire preuve d'autonomie, d'initiative, de responsabilité, d'engagement et d'esprit critique dans la conduite d'un projet artistique.", \ 
    u"(P5) Confronter intention et réalisation dans la conduite d'un projet pour l'adapter et le réorienter, s'assurer de la dimension artistique de celui-ci.", \ 
    u"(A1) Dire avec un vocabulaire approprié ce que l'on fait, ressent, imagine, observe, analyse; s'exprimer pour soutenir des intentions artistiques ou une interprétation d'oeuvre.", u"(A2) Établir des liens entre son propre travail, les oeuvres rencontrées ou les démarches observées.", \ 
    u"(A3) Expliciter la pratique individuelle ou collective, écouter et accepter les avis divers et contradictoires.", u"(A4) Porter un regard curieux et avisé sur son environnement artistique et culturel, proche et lointain, notamment sur la diversité des images fixes et animées, analogiques et numériques.", \ 
    u"(R1) Reconnaître et connaître des oeuvres de domaines et d'époques variés appartenant au patrimoine national et mondial, en saisir le sens et l'intérêt.", \ 
    u"(R2) Identifier des caractéristiques (plastiques, culturelles, sémantiques, symboliques) inscrivant une oeuvre d'art dans une aire géographique ou culturelle et dans un temps historique.", u"(R3) Proposer et soutenir l'analyse et l'interprétation d'une oeuvre.", \ 
    u"(R4) Interroger et situer oeuvres et démarches artistiques du point de vue de l'auteur et de celui du spectateur.", u"(R5) Prendre part au débat suscité par le fait artistique."] 
    # Liste des items du domaine du socle 
    liste_items_socle = [u"Faites le choix de votre item ici.", u"(D1-1-1-1) Comprendre, s'exprimer en utilisant la langue française à l'écrit et à l'oral > Parler/communiquer/écouter", u"(D1-1-1-2) Comprendre, s'exprimer en utilisant la langue française à l'écrit et à l'oral > Lire", \ 
    u"(D1-1-1-3) Comprendre, s'exprimer en utilisant la langue française à l'écrit et à l'oral > Ecrire", u"(D1-1-1-4) Comprendre, s'exprimer en utilisant la langue française à l'écrit et à l'oral > Utiliser les règles de la langue", \ 
    u"(D1-1-1-5) Comprendre, s'exprimer en utilisant la langue française à l'écrit et à l'oral > Apprendre les origines de la langue française", u"(D1-2-2-1) Comprendre, s'exprimer en utilisant une langue étrangère et, les cas échéant, une langue régionale > Pratiquer deux langues", \ 
    u"(D1-2-2-2) Comprendre, s'exprimer en utilisant une langue étrangère et, les cas échéant, une langue régionale > Comprendre, s'exprimer en langue étrangère", u"(D1-2-2-3) Comprendre, s'exprimer en utilisant une langue étrangère et, les cas échéant, une langue régionale > Dialoguer en langue étrangère" \ 
    u"(D1-2-2-4) Comprendre, s'exprimer en utilisant une langue étrangère et, les cas échéant, une langue régionale > Adapter le niveau de langue étrangère à la situation", u"(D1-2-2-5) Comprendre, s'exprimer en utilisant une langue étrangère et, les cas échéant, une langue régionale > Communiquer dans le quotidien en langue étrangère", \ 
    u"(D1-3-3-1) Comprendre, s'exprimer en utilisant les langages mathématiques, scientifiques et informatiques > Utiliser système décimal et langages formels", u"(D1-3-3-2) Comprendre, s'exprimer en utilisant les langages mathématiques, scientifiques et informatiques > Lire les plans, se repérer sur des cartes", \ 
    u"(D1-3-3-3) Comprendre, s'exprimer en utilisant les langages mathématiques, scientifiques et informatiques > Produire et utiliser des représentations", u"(D1-3-3-4) Comprendre, s'exprimer en utilisant les langages mathématiques, scientifiques et informatiques > Savoir les utilisations des langages informatiques", \ 
    u"(D1-3-3-5) Comprendre, s'exprimer en utilisant les langages mathématiques, scientifiques et informatiques > Connaître les principes d'algorithmique et de programmation", u"(D1-3-3-6) Comprendre, s'exprimer en utilisant les langages mathématiques, scientifiques et informatiques > Créer des applications simples", \ 
    u"(D1-4-4-1) Comprendre, s'exprimer en utilisant les langages des arts et du corps > S'exprimer et communiquer par les arts", u"(D1-4-4-2) Comprendre, s'exprimer en utilisant les langages des arts et du corps > Connaître, comprendre les langages artistiques utilisés", \ 
    u"(D1-4-4-3) Comprendre, s'exprimer en utilisant les langages des arts et du corps > S'exprimer par des activités, physiques, sportives ou artistiques", u"(D2-1-1) Organisation du travail personnel > Anticiper/gérer/mémoriser/planifier", \ 
    u"(D2-1-2) Organisation du travail personnel > Comprendre des consignes", u"(D2-1-3) Organisation du travail personnel > Mettre en oeuvre les capacités essentielles", u"(D2-1-4) Organisation du travail personnel > Identifier et résoudre un problème", \ 
    u"(D2-1-5) Organisation du travail personnel > Se constituer des outils personnels", u"(D2-2-1) Coopération et réalisation de projets > Travailler en équipe", u"(D2-2-2) Coopération et réalisation de projets > Gérer un projet", u"(D2-2-3) Coopération et réalisation de projets > Savoir que l'école est un lieu des savoirs", \ 
    u"(D2-2-4) Coopération et réalisation de projets > Utiliser des outils numériques", u"(D2-3-1) Médias, démarches de recherche et de traitement de l'information > Histoire de l'écrit, modes de production de l'image", u"(D2-3-2) Médias, démarches de recherche et de traitement de l'information > Utiliser des outils de recherche", \ 
    u"(D2-3-3) Médias, démarches de recherche et de traitement de l'information > Traiter les informations collectées, organiser, mémoriser", ] 

    # 
    r = len(self.liste_compet_travail_socle_eval) 
    #if r >= 0 : self.label_annonce_vocab.hide() 
    # Création du combo pour sélection des compétences travaillées 
    self.dico_combo_compet_travail[r] = QComboBox() 
    self.dico_combo_compet_travail[r].setMaximumWidth(250) 
    self.dico_combo_compet_travail[r].setMinimumWidth(250) 
    # Création du QTextEdit 
    self.dico_traduc_compet_travail[r] = QTextEdit() 
    self.dico_traduc_compet_travail[r].setMaximumWidth(280) 
    self.dico_traduc_compet_travail[r].setMinimumWidth(280) 
    self.dico_traduc_compet_travail[r].setMaximumHeight(54) 
    self.dico_traduc_compet_travail[r].setMinimumHeight(54) 
    # Création du combo pour sélection du domaine du socle 
    self.dico_domaines_du_socle[r] = QComboBox() 
    self.dico_domaines_du_socle[r].setMaximumWidth(240) 
    self.dico_domaines_du_socle[r].setMinimumWidth(240) 
    # ------------------------------ 
    self.dico_domaines_du_socle[r].addItems(liste_items_socle) 
    # ------------------------------ 
    # Création des spinbox 
    self.dico_spinbox_pts_chiffres[r] = QSpinBox() 
    self.dico_spinbox_pts_chiffres[r].setRange(0, 60) 
    # ------------------------------ 
    # Conditions de remplissage du combo (cycle 3 ou cycle 4) 
    # pour les compétences travaillées 
    # ------------------------------ 
    # Si le niveau de classe (self.classe à 0) n'est pas sélectionné, une boîte de dialogue nous en informe 
    if self.classe == 0 : 
     message = QMessageBox.warning(self, u'Message', u"Vous devez sélectionner un niveau de classe avant de continuer !!!", QMessageBox.Ok) 
    elif self.classe == u'6' : 
     self.dico_combo_compet_travail[r].addItems(liste_c_t_6e) 
    elif self.classe in [u'5', u'4', u'3']: 
     self.dico_combo_compet_travail[r].addItems(liste_c_t_5e4e3e) 
    # ------------------------------ 
    # Répartition dans la grille 
    self.grille_3_stack_6.addWidget(self.dico_combo_compet_travail[r], r, 0) 
    self.grille_3_stack_6.addWidget(self.dico_traduc_compet_travail[r], r, 1) 
    self.grille_3_stack_6.addWidget(self.dico_domaines_du_socle[r], r, 2) 
    self.grille_3_stack_6.addWidget(self.dico_spinbox_pts_chiffres[r], r, 3) 
    # Ecriture des n°s de lignes 
    self.dico_traduc_compet_travail[r].setText(str(r+1)+'. ') 

    # Les données sont introduites dans une liste 
    self.liste_compet_travail_socle_eval.append([self.dico_combo_compet_travail[r], self.dico_traduc_compet_travail[r], self.dico_domaines_du_socle[r], self.dico_spinbox_pts_chiffres[r]]) 

def supprimer_eval(self) : 
    ''' 
    ''' 
    row = len(self.liste_compet_travail_socle_eval) - 1 
    if row >= 0: 
     for column in range(self.grille_3_stack_6.columnCount()): 
      item = self.grille_3_stack_6.itemAtPosition(row, column) 
      if item is not None: 
       item.widget().deleteLater() 
     del self.liste_compet_travail_socle_eval[row] 
     del self.dico_combo_compet_travail[row] 
     del self.dico_traduc_compet_travail[row] 
     del self.dico_domaines_du_socle[row] 
     del self.dico_spinbox_pts_chiffres[row] 

전체 코드는 여기에 있습니다 : https://pastebin.com/BqU1H70C.

인터페이스의 스크린 샷 :

enter image description here

현재 코드

모두에 최적화되어 있지 않습니다 (그리고 단일 파일의 형태로 여전히).

편집 : 응답 eyllanesc에 대한

감사합니다,하지만 문제는 여전히 존재한다. 첨부 된 스크린 샷을 봐 :

enter image description here

편집 2 : 그것은 아주 잘

ekhumoro 작품! 여기

코드입니다 (나는 또한 항목에 대한 툴팁을 추가) :

스크린 샷
def ajouter_eval(self) : 
    ''' 
    ''' 
    # Liste des compétences travaillées en classe de 6ème 
    liste_c_t_6e = [u"(E1) Choisir, organiser et mobiliser des gestes, des outils et des matériaux en fonction des effets qu'ils produisent.", ...] 
    # Liste des compétences travaillées pour les classes de 5ème, 4ème et 3ème 
    liste_c_t_5e4e3e = [u"(E1) Choisir, mobiliser et adapter des langages et des moyens plastiques variés en fonction de leurs effets dans une intention artistique en restant attentif à l'inattendu.", ...] 
    # Liste des items du domaine du socle 
    liste_items_socle = [u"(D1-1-1-1) Comprendre, s'exprimer en utilisant la langue française à l'écrit et à l'oral > Parler/communiquer/écouter", ...] 
    # 
    r = len(self.liste_compet_travail_socle_eval) 
    # Création du combo pour sélection des compétences travaillées 
    self.dico_combo_compet_travail[r] = QComboBox() 
    # Les items de la combo sont affichés avec une barre de défilement 
    # horizontale afin que tous les items ne soient pas tronqués dans la combo 
    # ------------------------------ 
    # Un grand merci à ekhumoro pour la solution trouvée, à voir ici : 
    # https://stackoverflow.com/questions/47569433/allow-horizontal-scrolling-in-a-qcombobox 
    # ------------------------------ 
    vue_1 = QListView(self.dico_combo_compet_travail[r]) 
    self.dico_combo_compet_travail[r].setView(vue_1) 
    vue_1.setTextElideMode(Qt.ElideNone) 
    vue_1.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn) 
    # ------------------------------ 
    # Dimensionnement de la combo 
    self.dico_combo_compet_travail[r].setMaximumWidth(250) 
    self.dico_combo_compet_travail[r].setMinimumWidth(250) 
    # Création du QTextEdit 
    self.dico_traduc_compet_travail[r] = QTextEdit() 
    self.dico_traduc_compet_travail[r].setMaximumWidth(280) 
    self.dico_traduc_compet_travail[r].setMinimumWidth(280) 
    self.dico_traduc_compet_travail[r].setMaximumHeight(54) 
    self.dico_traduc_compet_travail[r].setMinimumHeight(54) 
    # Création du combo pour sélection du domaine du socle 
    self.dico_domaines_du_socle[r] = QComboBox() 
    # Voir commentaires plus haut ... 
    # ------------------------------ 
    vue_2 = QListView(self.dico_domaines_du_socle[r]) 
    self.dico_domaines_du_socle[r].setView(vue_2) 
    vue_2.setTextElideMode(Qt.ElideNone) 
    vue_2.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn) 
    # ------------------------------ 
    # Dimensionnement de la combo 
    self.dico_domaines_du_socle[r].setMaximumWidth(240) 
    self.dico_domaines_du_socle[r].setMinimumWidth(240) 
    # ------------------------------ 
    self.dico_domaines_du_socle[r].addItems(liste_items_socle) 
    # ------------------------------ 
    # Création des spinbox 
    self.dico_spinbox_pts_chiffres[r] = QSpinBox() 
    self.dico_spinbox_pts_chiffres[r].setRange(0, 60) 
    # ------------------------------ 
    # Conditions de remplissage du combo (cycle 3 ou cycle 4) 
    # pour les compétences travaillées 
    # ------------------------------ 
    # Si le niveau de classe (self.classe à 0) n'est pas sélectionné, une boîte de dialogue nous en informe 
    if self.classe == 0 : 
     message = QMessageBox.warning(self, u'Message', u"Vous devez sélectionner un niveau de classe avant de continuer !!!", QMessageBox.Ok) 
    elif self.classe == u'6' : 
     self.dico_combo_compet_travail[r].addItems(liste_c_t_6e) 
     # ------------------------------ 
     # ToolTips sur les items de la combo des compétences travaillées en 6ème (cycle 3) 
     for ct_6_1, ct_6_2 in enumerate(liste_c_t_6e) : 
      self.dico_combo_compet_travail[r].setItemData(ct_6_1, ct_6_2, Qt.ToolTipRole) 
     # ------------------------------ 
    elif self.classe in [u'5', u'4', u'3']: 
     self.dico_combo_compet_travail[r].addItems(liste_c_t_5e4e3e) 
     # ------------------------------ 
     # ToolTips sur les items de la combo des compétences travaillées en 5ème, 4ème et 3ème (cycle 4) 
     for ct_543_1, ct_543_2 in enumerate(liste_c_t_5e4e3e) : 
      self.dico_combo_compet_travail[r].setItemData(ct_543_1, ct_543_2, Qt.ToolTipRole) 
    # ------------------------------ 
    # ToolTips sur les items du combo sélection du domaine du socle 
    for ds_1, ds_2 in enumerate(liste_items_socle) : 
     self.dico_domaines_du_socle[r].setItemData(ds_1, ds_2, Qt.ToolTipRole)   
    # ------------------------------     
    # Répartition dans la grille 
    self.grille_3_stack_6.addWidget(self.dico_combo_compet_travail[r], r, 0) 
    self.grille_3_stack_6.addWidget(self.dico_traduc_compet_travail[r], r, 1) 
    self.grille_3_stack_6.addWidget(self.dico_domaines_du_socle[r], r, 2) 
    self.grille_3_stack_6.addWidget(self.dico_spinbox_pts_chiffres[r], r, 3) 
    # Ecriture des n°s de lignes 
    self.dico_traduc_compet_travail[r].setText(str(r+1)+'. ') 

    # Les données sont introduites dans une liste 
    self.liste_compet_travail_socle_eval.append([self.dico_combo_compet_travail[r], self.dico_traduc_compet_travail[r], self.dico_domaines_du_socle[r], self.dico_spinbox_pts_chiffres[r]]) 

: enter image description here

답변

1

표준 QComboBox은 (다른 것들 사이에) 텍스트 생략하다 모드를 변경하는 사용자 정의보기를 사용 .

combo = QtGui.QComboBox() 
view = QtGui.QListView(combo) 
combo.setView(view) 
# this must be done *after* re-setting the view 
view.setTextElideMode(QtCore.Qt.ElideNone) 
view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) 
+0

와우!, 덕분에 많이 ekhumoro : 그래서 당신은 당신이 원하는 행동을 얻기 위해 정상 QListView로-다시 설정해야합니다. 메시지 1의 편집 2를 참조하십시오. – ekdmekdm