Je suis en train de développer une boîte de dialogue graphique utilisant PyQT4 qui importe des données dans un Pandas DataFrame, puis trace les données dans un canevas Matplotlib incorporé.Remplir QComboBox avec une liste
Je voudrais passer une liste de variable de la DataFrame à la zone de liste déroulante. Ma première tentative a été:
list = list(df.parameter,unique())
self.FirstComboBox = QtGui.QComboBox()
self.FirstComboBox.addItems(list)
Mais l'exécution de ce je reçois
TypeError: QComboBox.addItems(QStringList): argument 1 has unexpected type 'list'
J'ai vu des exemples où une liste triée des clés dict est passé à une zone de liste déroulante, donc je suis confus que Je ne peux pas passer une liste.
Ben
En Python, ce type d'itération explicite se réduit trivialement à: 'pour un canal dans les canaux: self.MyComboBox.addItem (channel)'. PySide2 semble malheureusement nécessiter un contournement similaire. En particulier, le '' TypeError: 'PySide2.QtWidgets.QComboBox.addItems' appelé avec des types d'arguments erronés "' exception est levée lors de la tentative de passer une chaîne de chaînes pure-Python à la méthode * any * 'addItems()' - une échec flagrant du générateur de liaison sous-jacent (par exemple, SIP, Shiboken2). '' –
** Oh, je vois. ** Dans mon cas, j'essayais de passer une vue des valeurs 'OrderedDict' (c'est-à-dire la séquence retournée par la méthode' OrderedDict.values () ')' 'QComboBox .addItems() 'méthode. Puisque cette vue * est * une séquence valide, cela devrait techniquement fonctionner. Ce n'est pas le cas, car le générateur de liaison semble ne supporter que les séquences 'tuple' et' list'. Dans mon cas, la solution consistait donc à forcer la séquence désirée en un «tuple» d'abord: par exemple, 'self.MyComboBox.addItems (tuple (channels))'. –