def __init__(self, template, character, parent=None): super(MeritWidget, self).__init__(template, character, parent) self.__layout = QVBoxLayout() self.setLayout( self.__layout ) self.__toolBox = QToolBox() ## Die Auflistung der Merits soll auch unter Windows einen transparenten Hintergrund haben. self.__toolBox.setObjectName("transparentWidget") ## \todo Sollte nicht vom Betriebssystem, sondern vom verwendeten Style abhängen. if os.name == "nt": self.__toolBox.setStyleSheet( "QScrollArea{ background: transparent; } QWidget#transparentWidget { background: transparent; }" ) self.__layout.addWidget(self.__toolBox) self.__typ = "Merit" categories = [] categories.extend(Config.CATEGORIES_MERITS) categories.extend(self._storage.categories(self.__typ)) # Duplikate werden entfernt. Dadurch wird die in der Config-Klasse vorgegebene Reihenfolge eingehalten und zusätzliche, dort nicht erwähnte Kategorien werden hinterher angehängt. categories = ListTools.uniqify_ordered(categories) # Diese Liste speichert den Index der ToolBox-Seite bei den unterschiedlichen Kategorien self.__categoryIndex = {} # Merits werden in einer Spalte heruntergeschrieben, aber mit vertikalem Platz dazwischen. for item in categories: # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetMeritCategory = QWidget() ## Dank des Namens übernimmt dieses Widget den Stil des Eltern-Widgets. widgetMeritCategory.setObjectName("transparentWidget") layoutMeritCategory = QVBoxLayout() widgetMeritCategory.setLayout( layoutMeritCategory ) self.__toolBox.addItem( widgetMeritCategory, item ) self.__categoryIndex[item] = self.__toolBox.count() - 1 #Debug.debug(self.__categoryIndex) __list = list( self._character.traits[self.__typ][item].items() ) __list.sort() for merit in __list: #Debug.debug(merit) # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = CharaTrait( merit[1], self ) traitWidget.setSpecialtiesHidden(True) if not merit[1].custom: traitWidget.setDescriptionHidden(True) # Bei Merits sind nur bestimmte Werte erlaubt. #Debug.debug(self._storage.traits[self.__typ][item][merit[0]]) traitWidget.setPossibleValues(self._storage.traits[self.__typ][item][merit[1].identifier]["values"]) # Es werden nur Eigenschaften der richtigen Alters- und Zeit-Kategorie angezeigt. self.hideReasonChanged.connect(traitWidget.hideOrShowTrait) layoutMeritCategory.addWidget( traitWidget ) merit[1].valueChanged.connect(self.countMerits) #self._character.speciesChanged.connect(traitWidget.hideOrShowTrait_species) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. layoutMeritCategory.addStretch() self.setMinimumWidth(Config.TRAIT_WIDTH_MIN) self._character.speciesChanged.connect(self.countMerits)
def __init__(self, template, character, parent=None): super(SkillWidget, self).__init__(template, character, parent) self.__layout = QVBoxLayout() self.setLayout(self.__layout) self.__scrollArea = QScrollArea() ## Die Auflistung der Fertigkeiten soll auch unter Windows einen transparenten Hintergrund haben. self.__scrollArea.setObjectName("transparentWidget") ## \todo Sollte nicht vom Betriebssystem, sondern vom verwendeten Style abhängen. if os.name == "nt": self.__scrollArea.setStyleSheet( "QWidget#transparentWidget { background: transparent; }") self.__layout.addWidget(self.__scrollArea) self.__scrollLayout = QVBoxLayout() self.__scrollWidget = QWidget() ## Die Auflistung der Fertigkeiten soll auch unter Windows einen transparenten Hintergrund haben. Indem ich den selben Namen wie zuvor vergebe, wirkt auch das Stylsheet auf dieses Widget. self.__scrollWidget.setObjectName("transparentWidget") #self.__scrollWidget.setStyleSheet( "QWidget#transparentWidget { background-color:transparent; }" ) #scrollWidget.setMinimumSize(this.width(), 400); self.__scrollWidget.setLayout(self.__scrollLayout) typ = "Skill" ## Eine Liste, in der alle Eigenschafts-Widgets aufgelistet werden. self.__traitWidgets = [] for item in Config.CATEGORIES_MAIN: #Debug.debug(self._character.traits) # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetSkillCategory = QGroupBox() widgetSkillCategory.setTitle(item) widgetSkillCategory.setFlat(True) layoutSkillCategory = QVBoxLayout() widgetSkillCategory.setLayout(layoutSkillCategory) self.__scrollLayout.addWidget(widgetSkillCategory) __list = list(self._character.traits[typ][item].items()) __list.sort() for skill in __list: # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = CharaTrait(skill[1], self) traitWidget.buttonText = 0 traitWidget.setDescriptionHidden(True) traitWidget.enableButton( 0 ) # Zu Beginn sollen die Spezailisierungen nicht enabled sein. # Dieses Widget auch an Liste anhängen, damit ich einfacher darauf zugreifen kann. traitListItem = traitWidget self.__traitWidgets.append(traitListItem) # Es werden nur Fertigkeiten der richtigen Alters- und Zeit-Kategorie angezeigt. self.hideReasonChanged.connect(traitWidget.hideOrShowTrait) # Fertigkeiten haben Spezialisierungen. traitWidget.specialtiesClicked.connect( self.uncheckOtherButtons) traitWidget.specialtiesClicked.connect( self.specialtiesActivated.emit) ## Wenn sich die Spezialisierungen ändern, sollen die veränderten Spezialisierungen auch angezeigt werden. Das wird so gelöst, als wäre der Knopf für die Spezialisierungen erneut gedrückt worden. #skill.specialtiesChanged.connect(self.emitSpecialtiesActivated) layoutSkillCategory.addWidget(traitWidget) self.maxTraitChanged.connect(traitWidget.setMaximum) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. self.__scrollLayout.addStretch() self.__scrollArea.setWidget(self.__scrollWidget) self.__scrollArea.setWidgetResizable(True) self.__scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.__scrollArea.setMinimumWidth( self.__scrollArea.viewport().minimumWidth())
def __init__(self, template, character, parent=None): super(SkillWidget, self).__init__(template, character, parent) self.__layout = QVBoxLayout() self.setLayout( self.__layout ) self.__scrollArea = QScrollArea() ## Die Auflistung der Fertigkeiten soll auch unter Windows einen transparenten Hintergrund haben. self.__scrollArea.setObjectName("transparentWidget") ## \todo Sollte nicht vom Betriebssystem, sondern vom verwendeten Style abhängen. if os.name == "nt": self.__scrollArea.setStyleSheet( "QWidget#transparentWidget { background: transparent; }" ) self.__layout.addWidget( self.__scrollArea) self.__scrollLayout = QVBoxLayout() self.__scrollWidget = QWidget() ## Die Auflistung der Fertigkeiten soll auch unter Windows einen transparenten Hintergrund haben. Indem ich den selben Namen wie zuvor vergebe, wirkt auch das Stylsheet auf dieses Widget. self.__scrollWidget.setObjectName("transparentWidget") #self.__scrollWidget.setStyleSheet( "QWidget#transparentWidget { background-color:transparent; }" ) #scrollWidget.setMinimumSize(this.width(), 400); self.__scrollWidget.setLayout(self.__scrollLayout) typ = "Skill" ## Eine Liste, in der alle Eigenschafts-Widgets aufgelistet werden. self.__traitWidgets = [] for item in Config.CATEGORIES_MAIN: #Debug.debug(self._character.traits) # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetSkillCategory = QGroupBox() widgetSkillCategory.setTitle(item) widgetSkillCategory.setFlat(True) layoutSkillCategory = QVBoxLayout() widgetSkillCategory.setLayout( layoutSkillCategory ); self.__scrollLayout.addWidget( widgetSkillCategory ) __list = list( self._character.traits[typ][item].items() ) __list.sort() for skill in __list: # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = CharaTrait( skill[1], self ) traitWidget.buttonText = 0 traitWidget.setDescriptionHidden( True ) traitWidget.enableButton(0) # Zu Beginn sollen die Spezailisierungen nicht enabled sein. # Dieses Widget auch an Liste anhängen, damit ich einfacher darauf zugreifen kann. traitListItem = traitWidget self.__traitWidgets.append(traitListItem) # Es werden nur Fertigkeiten der richtigen Alters- und Zeit-Kategorie angezeigt. self.hideReasonChanged.connect(traitWidget.hideOrShowTrait) # Fertigkeiten haben Spezialisierungen. traitWidget.specialtiesClicked.connect(self.uncheckOtherButtons) traitWidget.specialtiesClicked.connect(self.specialtiesActivated.emit) ## Wenn sich die Spezialisierungen ändern, sollen die veränderten Spezialisierungen auch angezeigt werden. Das wird so gelöst, als wäre der Knopf für die Spezialisierungen erneut gedrückt worden. #skill.specialtiesChanged.connect(self.emitSpecialtiesActivated) layoutSkillCategory.addWidget( traitWidget ) self.maxTraitChanged.connect(traitWidget.setMaximum) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. self.__scrollLayout.addStretch() self.__scrollArea.setWidget(self.__scrollWidget) self.__scrollArea.setWidgetResizable(True) self.__scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.__scrollArea.setMinimumWidth(self.__scrollArea.viewport().minimumWidth())
def __init__(self, template, character, typ, isCheckable=False, parent=None): super(CategoryWidget, self).__init__(parent) self.__storage = template self.__character = character self._layout = QVBoxLayout() self.setLayout(self._layout) self._toolBox = QToolBox() ## Die Auflistung der Widgets soll auch unter Windows einen transparenten Hintergrund haben. self._toolBox.setObjectName("transparentWidget") ## \todo Sollte nicht vom Betriebssystem, sondern vom verwendeten Style abhängen. if os.name == "nt": self._toolBox.setStyleSheet( "QScrollArea{ background: transparent; } QWidget#transparentWidget { background: transparent; }" ) self._layout.addWidget(self._toolBox) self._typ = typ categories = self.__storage.categories(self._typ) # Diese Liste speichert den Index der ToolBox-Seite bei den unterschiedlichen Kategorien # { # Index: [Widget, Eigenschaft1, Eigenschaft2, ...] # } self._toolBoxPageList = {} for item in categories: # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetCategory = QWidget() ## Dank des Namens übernimmt dieses Widget den Stil des Eltern-Widgets. widgetCategory.setObjectName("transparentWidget") layoutCategory = QVBoxLayout() widgetCategory.setLayout(layoutCategory) ## In dieser Liste sammle ich die Widgets, damit sie später bei Bedarf in die ToolBox eingefügt werden können. self._toolBoxPageList[item] = [widgetCategory] __list = list(self.__character.traits[self._typ][item].items()) __list.sort() for trait in __list: # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = None if isCheckable: traitWidget = CheckTrait(trait[1], self) else: traitWidget = CharaTrait(trait[1], self) traitWidget.setSpecialtiesHidden(True) if type(trait) != StandardTrait or not trait[1].custom: traitWidget.setDescriptionHidden(True) self._toolBoxPageList[item].append(trait[1]) layoutCategory.addWidget(traitWidget) self.__character.traitVisibleReasonChanged.connect( traitWidget.hideOrShowTrait) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. layoutCategory.addStretch() #Debug.debug(self._toolBoxPageList) self.__character.speciesChanged.connect(self.hideOrShowToolPage) self.__character.breedChanged.connect(self.hideOrShowToolPage) self.__character.factionChanged.connect(self.hideOrShowToolPage)
def __init__(self, template, character, parent=None): super(AttributeWidget, self).__init__(template, character, parent) self.__layout = QVBoxLayout() self.setLayout(self.__layout) self.__layoutAttributes = QGridLayout() self.__layout.addLayout(self.__layoutAttributes) self.__labelPower = QLabel("<b>" + self.tr("Power") + "</b>") self.__labelPower.setAlignment(Qt.AlignRight) self.__labelFinesse = QLabel("<b>" + self.tr("Finesse") + "</b>") self.__labelFinesse.setAlignment(Qt.AlignRight) self.__labelResistance = QLabel("<b>" + self.tr("Resistance") + "</b>") self.__labelResistance.setAlignment(Qt.AlignRight) actualRow = 1 actualColumn = 0 self.__layoutAttributes.addWidget(self.__labelPower, actualRow, actualColumn) actualRow += 1 self.__layoutAttributes.addWidget(self.__labelFinesse, actualRow, actualColumn) actualRow += 1 self.__layoutAttributes.addWidget(self.__labelResistance, actualRow, actualColumn) self.__labelStr = QLabel(self) self.__labelDex = QLabel(self) self.__labelSta = QLabel(self) self.__labelMan = QLabel(self) #connect( self, SIGNAL( speciesChanged( bool ) ), labelStr, SLOT( setHidden( bool ) ) ) #connect( self, SIGNAL( speciesChanged( bool ) ), labelDex, SLOT( setHidden( bool ) ) ) #connect( self, SIGNAL( speciesChanged( bool ) ), labelSta, SLOT( setHidden( bool ) ) ) #connect( self, SIGNAL( speciesChanged( bool ) ), labelMan, SLOT( setHidden( bool ) ) ) for item in Config.ATTRIBUTES: #Debug.debug(self._character.traits) actualColumn += 1 vLine = QFrame(self) vLine.setFrameStyle(QFrame.VLine) self.__layoutAttributes.addWidget(vLine, 1, actualColumn, len(item[1]), 1, Qt.AlignHCenter) self.__layoutAttributes.setColumnStretch(actualColumn, 1) # Jetzt sind wir in der Spalte für die tatsächlchen Attribute actualColumn += 1 # Aber zuerst kommt die Überschrift für die einzelnen Kategorien. header = QLabel() header.setAlignment(Qt.AlignHCenter) header.setText("<b>" + item[0] + "</b>") self.__layoutAttributes.addWidget(header, 0, actualColumn) # Einfügen der tatsächlichen Attribute i = 0 for subitem in item[1]: attrib = self._character.traits["Attribute"][item[0]][subitem] #Debug.debug(attrib) # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = CharaTrait(attrib, self) traitWidget.setSpecialtiesHidden(True) traitWidget.setDescriptionHidden(True) # An welcher Position sitzt dieses Attribut in der Config.ATTRIBUTES-Liste? self.__layoutAttributes.addWidget(traitWidget, i + 1, actualColumn) self.maxTraitChanged.connect(traitWidget.setMaximum) #if ( item == "Physical" ): #if ( attrib["name"] == "Strength" ): #self.__layoutAttributes.addWidget( self.__labelStr, j + 1, actualColumn + 1 ) #connect( trait, SIGNAL( valueChanged( int ) ), self, SLOT( updateshapeValuesStr( int ) ) ) #} else if ( trait.name() == "Dexterity" ) { #layoutAttributes.addWidget( self.__labelDex, j + 1, actualColumn + 1 ) #connect( trait, SIGNAL( valueChanged( int ) ), self, SLOT( updateshapeValuesDex( int ) ) ) #} else if ( trait.name() == "Stamina" ) { #layoutAttributes.addWidget( self.__labelSta, j + 1, actualColumn + 1 ) #connect( trait, SIGNAL( valueChanged( int ) ), self, SLOT( updateshapeValuesSta( int ) ) ) #} else if ( trait.category() == cv_AbstractTrait::Social ) { #if ( self.__trait.name() == "Manipulation" ) { #layoutAttributes.addWidget( labelMan, j + 1, actualColumn + 1 ) #connect( trait, SIGNAL( valueChanged( int ) ), self, SLOT( updateshapeValuesMan( int ) ) ) i += 1 # Bei Werwölfen erscheint hier Zusatztext. Und damit der Sparator richtig gesetzt wird, muß die aktuelle Spalte ein weitergezählt werden. actualColumn += 1 self.__layout.addSpacing(Config.SPACE_VERTICAL_STD) self.__layoutBonus = QGridLayout() self.__layout.addLayout(self.__layoutBonus) self.__labelBonus = QLabel(self) self.__labelBonus.setText(self.tr("Bonus Attribute:")) self.__layoutButtonsBonus = QVBoxLayout() self.__buttonsBonus = QButtonGroup(self) self.__layoutBonus.addWidget(self.__labelBonus, 0, 0, Qt.AlignTop | Qt.AlignLeft) self.__layoutBonus.addLayout(self.__layoutButtonsBonus, 0, 1) #// layoutBonus.addItem(new QSpacerItem(0,0), 0, 2) self.__layoutBonus.addWidget(QWidget(self), 0, 2) self.__layoutBonus.setColumnStretch(2, 1)
def __init__(self, template, character, parent=None): super(AttributeWidget, self).__init__(template, character, parent) self.__layout = QVBoxLayout() self.setLayout( self.__layout ) self.__layoutAttributes = QGridLayout() self.__layout.addLayout( self.__layoutAttributes ) self.__labelPower = QLabel( "<b>" + self.tr( "Power" ) + "</b>" ) self.__labelPower.setAlignment( Qt.AlignRight ) self.__labelFinesse = QLabel( "<b>" + self.tr( "Finesse" ) + "</b>" ) self.__labelFinesse.setAlignment( Qt.AlignRight ) self.__labelResistance = QLabel( "<b>" + self.tr( "Resistance" ) + "</b>" ) self.__labelResistance.setAlignment( Qt.AlignRight ) actualRow = 1 actualColumn = 0 self.__layoutAttributes.addWidget( self.__labelPower, actualRow, actualColumn ) actualRow += 1 self.__layoutAttributes.addWidget( self.__labelFinesse, actualRow, actualColumn ) actualRow += 1 self.__layoutAttributes.addWidget( self.__labelResistance, actualRow, actualColumn ) self.__labelStr = QLabel( self ) self.__labelDex = QLabel( self ) self.__labelSta = QLabel( self ) self.__labelMan = QLabel( self ) #connect( self, SIGNAL( speciesChanged( bool ) ), labelStr, SLOT( setHidden( bool ) ) ) #connect( self, SIGNAL( speciesChanged( bool ) ), labelDex, SLOT( setHidden( bool ) ) ) #connect( self, SIGNAL( speciesChanged( bool ) ), labelSta, SLOT( setHidden( bool ) ) ) #connect( self, SIGNAL( speciesChanged( bool ) ), labelMan, SLOT( setHidden( bool ) ) ) for item in Config.ATTRIBUTES: #Debug.debug(self._character.traits) actualColumn += 1 vLine = QFrame( self ) vLine.setFrameStyle( QFrame.VLine) self.__layoutAttributes.addWidget( vLine, 1, actualColumn, len(item[1]), 1, Qt.AlignHCenter ) self.__layoutAttributes.setColumnStretch( actualColumn, 1 ) # Jetzt sind wir in der Spalte für die tatsächlchen Attribute actualColumn += 1 # Aber zuerst kommt die Überschrift für die einzelnen Kategorien. header = QLabel() header.setAlignment( Qt.AlignHCenter ) header.setText( "<b>" + item[0] + "</b>" ) self.__layoutAttributes.addWidget( header, 0, actualColumn ) # Einfügen der tatsächlichen Attribute i = 0 for subitem in item[1]: attrib = self._character.traits["Attribute"][item[0]][subitem] #Debug.debug(attrib) # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = CharaTrait( attrib, self ) traitWidget.setSpecialtiesHidden( True ) traitWidget.setDescriptionHidden( True ) # An welcher Position sitzt dieses Attribut in der Config.ATTRIBUTES-Liste? self.__layoutAttributes.addWidget( traitWidget, i + 1, actualColumn ) self.maxTraitChanged.connect(traitWidget.setMaximum) #if ( item == "Physical" ): #if ( attrib["name"] == "Strength" ): #self.__layoutAttributes.addWidget( self.__labelStr, j + 1, actualColumn + 1 ) #connect( trait, SIGNAL( valueChanged( int ) ), self, SLOT( updateshapeValuesStr( int ) ) ) #} else if ( trait.name() == "Dexterity" ) { #layoutAttributes.addWidget( self.__labelDex, j + 1, actualColumn + 1 ) #connect( trait, SIGNAL( valueChanged( int ) ), self, SLOT( updateshapeValuesDex( int ) ) ) #} else if ( trait.name() == "Stamina" ) { #layoutAttributes.addWidget( self.__labelSta, j + 1, actualColumn + 1 ) #connect( trait, SIGNAL( valueChanged( int ) ), self, SLOT( updateshapeValuesSta( int ) ) ) #} else if ( trait.category() == cv_AbstractTrait::Social ) { #if ( self.__trait.name() == "Manipulation" ) { #layoutAttributes.addWidget( labelMan, j + 1, actualColumn + 1 ) #connect( trait, SIGNAL( valueChanged( int ) ), self, SLOT( updateshapeValuesMan( int ) ) ) i += 1 # Bei Werwölfen erscheint hier Zusatztext. Und damit der Sparator richtig gesetzt wird, muß die aktuelle Spalte ein weitergezählt werden. actualColumn += 1 self.__layout.addSpacing( Config.SPACE_VERTICAL_STD ) self.__layoutBonus = QGridLayout() self.__layout.addLayout( self.__layoutBonus ) self.__labelBonus = QLabel( self ) self.__labelBonus.setText( self.tr( "Bonus Attribute:" ) ) self.__layoutButtonsBonus = QVBoxLayout() self.__buttonsBonus = QButtonGroup( self ) self.__layoutBonus.addWidget( self.__labelBonus, 0, 0, Qt.AlignTop | Qt.AlignLeft ) self.__layoutBonus.addLayout( self.__layoutButtonsBonus, 0, 1 ) #// layoutBonus.addItem(new QSpacerItem(0,0), 0, 2) self.__layoutBonus.addWidget( QWidget( self ), 0, 2 ) self.__layoutBonus.setColumnStretch( 2, 1 )
def __init__(self, template, character, parent=None): super(MeritWidget, self).__init__(template, character, parent) self.__layout = QVBoxLayout() self.setLayout(self.__layout) self.__toolBox = QToolBox() ## Die Auflistung der Merits soll auch unter Windows einen transparenten Hintergrund haben. self.__toolBox.setObjectName("transparentWidget") ## \todo Sollte nicht vom Betriebssystem, sondern vom verwendeten Style abhängen. if os.name == "nt": self.__toolBox.setStyleSheet( "QScrollArea{ background: transparent; } QWidget#transparentWidget { background: transparent; }" ) self.__layout.addWidget(self.__toolBox) self.__typ = "Merit" categories = [] categories.extend(Config.CATEGORIES_MERITS) categories.extend(self._storage.categories(self.__typ)) # Duplikate werden entfernt. Dadurch wird die in der Config-Klasse vorgegebene Reihenfolge eingehalten und zusätzliche, dort nicht erwähnte Kategorien werden hinterher angehängt. categories = ListTools.uniqify_ordered(categories) # Diese Liste speichert den Index der ToolBox-Seite bei den unterschiedlichen Kategorien self.__categoryIndex = {} # Merits werden in einer Spalte heruntergeschrieben, aber mit vertikalem Platz dazwischen. for item in categories: # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetMeritCategory = QWidget() ## Dank des Namens übernimmt dieses Widget den Stil des Eltern-Widgets. widgetMeritCategory.setObjectName("transparentWidget") layoutMeritCategory = QVBoxLayout() widgetMeritCategory.setLayout(layoutMeritCategory) self.__toolBox.addItem(widgetMeritCategory, item) self.__categoryIndex[item] = self.__toolBox.count() - 1 #Debug.debug(self.__categoryIndex) __list = list(self._character.traits[self.__typ][item].items()) __list.sort() for merit in __list: #Debug.debug(merit) # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = CharaTrait(merit[1], self) traitWidget.setSpecialtiesHidden(True) if not merit[1].custom: traitWidget.setDescriptionHidden(True) # Bei Merits sind nur bestimmte Werte erlaubt. #Debug.debug(self._storage.traits[self.__typ][item][merit[0]]) traitWidget.setPossibleValues(self._storage.traits[ self.__typ][item][merit[1].identifier]["values"]) # Es werden nur Eigenschaften der richtigen Alters- und Zeit-Kategorie angezeigt. self.hideReasonChanged.connect(traitWidget.hideOrShowTrait) layoutMeritCategory.addWidget(traitWidget) merit[1].valueChanged.connect(self.countMerits) #self._character.speciesChanged.connect(traitWidget.hideOrShowTrait_species) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. layoutMeritCategory.addStretch() self.setMinimumWidth(Config.TRAIT_WIDTH_MIN) self._character.speciesChanged.connect(self.countMerits)