J'ai un QTreeWidget, que je veux être aussi petit que possible, avec probablement une seule branche. Mais je veux que la taille change en fonction de la façon dont cela se dilate ou s'effondre. Ainsi que commencer avec une taille qui correspond à la partie remplie du widget.Taille dynamique de QTreeWidget dans PyQt5
Je crée le QTreewidget en ajoutant QTreeWidgetItems, qui a reçu TreeWidget en tant que parent, puis en faisant à nouveau QTreeWidgetItems qui a obtenu QTreeWidgetItem en tant que parent.
En ce moment, il commence comme image de gauche, mais je veux que ça commence comme celui de droite. (Ce qui est ce que la taille minimale est, lorsque vous redimensionnez la fenêtre.)
Comment puis-je redimensionner à la taille minimale au démarrage?
Aussi, comment puis-je le redimensionner, disons le redimensionner quand les cases à cocher en retrait ont disparu (caché), ce qui prend encore moins d'espace. À l'heure actuelle, la taille minimale est toujours ce qu'elle est, quand ceux-ci sont visibles. Bonus: Quand j'ai changé le style, la taille minimum est devenue plus petite et m'a fait obtenir des barres de défilement à taille minimum, bien que je ne sache pas ce que j'ai changé, comme cela arrive seulement quand je change la feuille de style.
Sur demande, voici le code, c'est beaucoup de désordre, car c'est juste un travail en cours. Voici la classe que j'ai faite pour faire l'arbre.
class paramTree(QTreeWidget):
def __init__(self, Options: dict):
super().__init__()
self.setExpandsOnDoubleClick(False)
self.setHeaderHidden(True)
self.setRootIsDecorated(False)
self.Main = self.makeOption(Options['name'], self, Options['state'],0,Options['tooltip'])
self.Options=[]
if Options['options'] is not None:
print(Options['options'])
for number, choice in enumerate(Options['options']):
if Options['Active option'] == number:
sub = self.makeOption(choice, self.Main,True,1)
sub.setFlags(sub.flags()^Qt.ItemIsUserCheckable)
else:
sub = self.makeOption(choice, self.Main,False,1)
self.Options.append(self.indexFromItem(sub))
def makeOption(name, parent, checkstate, level=0, tooltip=None):
mainItem = QTreeWidgetItem(parent,[name])
if tooltip:
mainItem.setToolTip(0,tooltip)
if checkstate:
mainItem.setCheckState(0, Qt.Checked)
else:
mainItem.setCheckState(0, Qt.Unchecked)
mainItem.setExpanded(True)
return mainItem
Ceci est juste mis dans un widget dans les images ci-dessus. La classe prend une dict, qui a des informations pour le nom/options/tooltip et une liste avec des noms, qui finissent par faire les cases à cocher sous. Ceci est fait 4 fois, donc 4 treewidgets.
En outre, voici une dict qui peut être passée à la classe, pour le faire. Cependant, tout n'est pas utilisé.
optiondict={
"Active option": 1,
"Command": "",
"dependency": None,
"name": "Convert to audio",
"options": [
"mp3",
"aac",
"flac"
],
"state": True,
"tooltip": "Text here"
}
montrez votre code s'il vous plaît – eyllanesc
La taille affichée au début ne dépend pas de QTreeWidget mais dépend de la disposition. – eyllanesc
@eyllanesc Ajout du code. J'ai utilisé un QVBoxLayout pour ajouter le QTreeWidget personnalisé, mais l'ajout de stretch, avant ou après, n'a aucun effet sur la forme générale à la création. – Thomasedv