IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Comment ajouter des tabs dynamiquement à QTabWidget ?


Sujet :

PyQt Python

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 39
    Points
    39
    Par défaut Comment ajouter des tabs dynamiquement à QTabWidget ?
    J'ai créé mon interface avec Qt Creator et du coup j'ai eu deux tabs par défaut dans QtabWidget. Actuellement, je voudrais insérer ou ajouter des tabs dynamiquement. J'ai utilisé la méthode addTab ou insertTab, mon problème est avec les tabs par défaut Tab 1 et Tab 2. J'ai utilisé la méthode removeTabs pour les supprimer mais je ne suis pas convaincue par ma solution. Du coup, je cherche autre solution pour éviter d'avoir des duplicatas de tabs.
    Merci pour votre aide.

    Voici un extrait de mon code :

    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
         self.setupUi(self)
     
            self.tabs = self.findChild(QtGui.QTabWidget, 'tabWidget')
     
            checked_list = [u'Base Scenario 1991 - 91A', u'Intermediate 1996 - 96A', u'Trend Scenario 2001 - 01T']
            nb_tabs = len(checked_list)
     
            for i in range(nb_tabs) :
                self.add_new_tab(i,checked_list[i])
     
            self.remove_default_tabs(nb_tabs)
            self.tabs.addTab(QtGui.QWidget(),"All checked scenarios")
            self.tabs.setCurrentIndex(0)
     
        def add_new_tab(self,index,text):
     
            self.new_tab = QtGui.QWidget()
            self.tabs.insertTab(index,self.new_tab,text)
            self.tabs.setTabText(index,text)
     
        def remove_default_tabs(self,nb_tabs):
             # we suppose that in QT Creator we don't change the names of the default tabs (Tab 1 and Tab 2)
            if self.tabs.tabText(nb_tabs) == "Tab 1" :
                self.tabs.removeTab(nb_tabs)
     
            if self.tabs.tabText(nb_tabs) == "Tab 2" :
                self.tabs.removeTab(nb_tabs)

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 156
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Je me suis pas sur de comprendre la question,
    En tous cas, addTab, insertTab, removeTab sont les méthodes à utiliser pour ajouter, insérer et supprimer des tabs.

    Maintenant si vous voulez rajouter des régles de gestion, ça dépend ce que vous cherchez à faire.
    Vous pouvez par exemple créer un simple objet BaseTab et lui ajouter quelques méthodes afin de faciliter les manipulation des tabs

    Ou créer un autre objet TabsManager dans lequel vous stockez vos tabs et c'est la dedans que vous implémentez vos règles de gestion.
    Vous pouvez aussi simplement stocker vos tabs dans un dictionnaire genre {tab_obj : "tab_type"} et vérifier si le dictionnaire contient tel ou tel tab avant de la créer afin d'éviter de dupliquer les tabs ...

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Pour nommer les onglets dans le Designer il faut sélectionner le QTabWidget lui-même, pas un onglet individuel, et dans la boîte de propriétés "Property Editor" et descendre en bas pour trouver la ligne "currentTabText". Tu cliques sur "Tab 1" et tu changes le texte. Ensuite tu sélectionnes le deuxième onglet et tu changes son nom de la même façon.

    Ton QTabWidget a reçu un nom (par défaut: "tabWidget") pas la peine de faire une recherche pour le trouver.

    donc, ceci ne sert à rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            self.tabs = self.findChild(QtGui.QTabWidget, 'tabWidget')
    Tu peux aussi les renommer dans ton code, si tu ne t'en sors pas avec le Designer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            self.setupUi(self)
            checked_list = [u'Base Scenario 1991 - 91A', u'Intermediate 1996 - 96A']
            for idx, title in enumerate(checked_list):
                self.tabWidget.setTabText(idx, title)
     
            # Les deux autres tabs
            for title in ['Trend Scenario 2001 - 01T', "All checked scenarios"]:
                self.tabWidget.addTab(QWidget(), title)

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 61
    Points : 39
    Points
    39
    Par défaut Solution plus simple
    Bonjour à tous,

    J'ai trouvé une solution plus simple et facile : supprimer les tabs par défaut Tab 1 et Tab 2 à partir de QT Creator.

    Ensuite, ajouter mes tabs en utilisant la méthode addTab.

    Merci pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [lablgtk2] comment ajouter des widget dynamiquement?
    Par amiroushka dans le forum Caml
    Réponses: 4
    Dernier message: 06/11/2009, 21h21
  2. Réponses: 3
    Dernier message: 23/04/2007, 13h14
  3. Réponses: 1
    Dernier message: 19/08/2006, 19h40
  4. [EXPORT] Comment ajouter des packages au .jar ?
    Par djskyz dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/08/2004, 23h23
  5. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo