Résolue

Le TaskItem ne change pas de taille

# Correction de code # Interface graphique

J'ai le même code que toi mais les items font toujours la taille par défaut


Ma methode get_tasks de MainWindow :

def get_tasks(self):
    logging.debug("get_tasks()")
    self.lw_tasks.clear()
    tasks = task.get_tasks()
    for task_name, done in tasks.items():
        TaskItem(name=task_name, done=done, list_widget=self.lw_tasks)


Ma methode __init__ de TaskItem :

def __init__(self, name, done, list_widget):
    logging.debug(f"TaskItem.__init__(name={name}, done={done}, list_widget={list_widget})")
    super().__init__(name)

    self.list_widget = list_widget
    self.done = done
    self.name = name

    self.setSizeHint(QtCore.QSize(self.sizeHint().width(), 50))

    self.list_widget.addItem(self)


Capture d'écran de mon interface :

Je viens d'avoir le même problème, et j'ai trouvé ce qui cloche: cela provient du fait que, dans cette version de PySide6 (qui a sûrement changé des choses depuis l'enregistrement de la vidéo par Thibault avec PySide2), il n'y a semble-t-il par défaut pas de taille définie au QListWidgetItem (va savoir pourquoi), donc self.sizeHint().width() ne renvoie rien! ((On le voit en faisant un print(self.sizeHint().width()): cela affiche -1, qui est souvent la valeur utilisée par les devs pour éviter de lever une exception).

La solution que j'ai trouvée: utiliser la largeur du QListWidget, qui elle est définie par défaut, comme ceci:
self.setSizeHint(QtCore.QSize(self.list_widget.sizeHint().width(), 50))

Un peu d'arrachage de cheveux tout ça, mais ouf c'est résolu 😜!

Thibault houdon

Mentor

Ah merci Simon pour la réponse, on avait manqué cette question de Christian !

Je confirme qu'utilise le sizeHint est la bonne façon de récupérer la place potentielle utilisée par le widget (calculée automatiquement par PySide). Donc utiliser la taille de la liste pour l'élément est une bonne méthode (et une valeur "hardcodé" pour la hauteur 👍).

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.