Objekt ansprechen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
kitebuggy
User
Beiträge: 39
Registriert: Donnerstag 5. August 2021, 21:11

Hallo

Ich habe folgendes Problem:

Ich erstelle eine Buttongroup und möchte einzelne Buttons ausserhalb der Funktion ansprechen.
Hier mein Quelltext, damit man weiss, was ich bezwecke (Die for-Schleife bekommt ihre Werte hier aus einer range(0,9), aber im reellen Programm aus einem dict. Das sollte aber das ganze nicht stören).

Code: Alles auswählen

#!/usr/bin/python
import sys
from PyQt5.QtWidgets import (QApplication,QWidget,QVBoxLayout,QPushButton,QButtonGroup)

class panel(QWidget):
    
    def __init__(self):
        super().__init__()
        self.buildPanel()
        #self.buttonchecked()
        self.show()    
        
    def buildPanel(self):
        '''
        builds the panel
        '''
        vlayout=QVBoxLayout()
        self.setWindowTitle('ButtonGroup test')
        buttonGroup=QButtonGroup(self)
        buttonGroup.setExclusive(False)
        for pin in range(0,9):
            button=QPushButton(self)
            button.setCheckable(True)
            button.setText(str(pin))
            button.setObjectName(str(pin))
            #f'self.button{pin}'=button #irgendsoetwas
            buttonGroup.addButton(button)
            vlayout.addWidget(button)
        buttonGroup.buttonClicked.connect(self.buttonClick)      
        self.setLayout(vlayout)
        
    def buttonClick(self,button):
        pin=button.text()
        print(f'Button: {pin}')
        
    def buttonchecked(self):
        checked=[2,3,5]
        for button in checked:
            f"button{button}".setText('pressed')
    
if __name__ == '__main__':
    app = QApplication(sys.argv)
    d=panel()
    sys.exit(app.exec())
Natürlich ist die ganze funktion buttonchecked Quatsch, da sie eine Syntaxerror erzeugt, aber der Text der Buttons der Liste soll ändern.

Danke für eure Hilfe
Benutzeravatar
__blackjack__
User
Beiträge: 14251
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@kitebuggy: Wenn man Texte auf andere Werte abbilden will, dann gibt es Wörterbücher (`dict`). Wenn die Werte fortlaufend nummerierte ”Namen” sind, dann will man kein Wörterbuch, sondern eine Liste.
“All tribal myths are true, for a given value of 'true'.” — Terry Pratchett, The Last Continent
Antworten