Seite 1 von 1

Visuelles Feedback beim Klicken eines Buttons

Verfasst: Freitag 30. Juli 2021, 12:28
von jcshine
Ich habe einen Button, welcher selbstverständlich eine Funktion zugeordnet ist, diese Funktion wird auch erfolgreich ausgeführt, nur leider kriegt der Anwender davon (erstmal) nichts mit, der Button hat nämlich kein Visuelles Feedback beim Klicken, meine Frage daher:
Wie kriege ich es hin, dass der Button sich bei klicken bewegt, kurz eingedrückt wird oder ähnliches?
Ich benutze einen QtWidgets.QPushButton von pyQT5.

Danke im Voraus für die Hilfe!

Re: Visuelles Feedback beim Klicken eines Buttons

Verfasst: Freitag 30. Juli 2021, 13:03
von __deets__
Ohne Code schwer zu sagen. Wenn ich raten müsste, dann macht deine Funktion einfach zu lange etwas, blockiert dadurch die GUI, und sollte zb in einen Worker-Thread oder in kleinere Arbeitspakete geteilt werden.

Re: Visuelles Feedback beim Klicken eines Buttons

Verfasst: Freitag 30. Juli 2021, 13:23
von jcshine

Code: Alles auswählen

       
    def __init__(self, parent=None, adminMode=False):
        super(MainView, self).__init__(parent)
        settings_area = QtWidgets.QScrollArea(self)
        settings_area.setWidgetResizable(True)
        settings_area.setFrameShape(QtWidgets.QFrame.NoFrame)
        settings_layout = QtWidgets.QGridLayout()
        settings_area_inner = QtWidgets.QFrame(settings_area)
        settings_area_inner.setFrameShape(QtWidgets.QFrame.NoFrame)
        settings_area_inner.setLayout(settings_layout)
        settings_area.setWidget(settings_area_inner)
        top_level_layout = QtWidgets.QGridLayout(self)
        top_level_layout.addWidget(settings_area)

        copy_button = QtWidgets.QPushButton("text")
        top_level_layout.addWidget(copy_button)
        
       
        copy_button.pressed.connect(
            lambda: Qt.QApplication.clipboard().setText(
                json.dumps(self.obtainSettings()[0], indent=4)
            )
 
Das ist der Code, da passiert nichts spannendes mMn. mein Problem ist nicht, dass etwa ein Fehler auftritt, ich möchte lediglich eine Visuelle Bestätigung haben, dass ich den Button gedrückt habe, wie es bei einem normalen PushButton eben der Fall ist.

Ich weiß nicht woher das kommt, aber der Button, der durch den oben gezeigten Code erstellt wir, sieht so aus
Bild

Re: Visuelles Feedback beim Klicken eines Buttons

Verfasst: Freitag 30. Juli 2021, 13:28
von __deets__
Das sieht in der Tat nicht besonders aufwändig aus. Wobei es ja auch nicht dem normalen Styling von Buttons entspricht. Woher kommt der Style?

Und auf den Verdacht hin, dass es eben doch die Operation ist, kannst du die ja mal durch ein simples Print ersetzen, um einen Einfluss auszuschließen.

Re: Visuelles Feedback beim Klicken eines Buttons

Verfasst: Montag 2. August 2021, 07:39
von jcshine
Ich habe tatsächlich ein bisschen tiefer im Verzeichnis ein style.css gefunden, in dem die styles der einzelnen Komponenten dargelegt sind, das für Buttons sieht wie folgt aus:

QPushButton{
background-color: rgb(255, 170, 0);
border-radius: 8px;
border: 2px solid rgb(255, 170, 0);
font-size: 14px;
padding: .25em;
height: 16px;

}

Weiß jemand wie der Button ein visuelles Feedback beim Klicken bekommen kann? Ich weiß ehrlich gesagt nicht genau wie man so etwas nennt, der Button sollte beim klicken kurz eingedrückt und dann wieder nach oben kommen, wie ein üblicher Button eben. Als Alternative habe ich mir gedacht den Text des Buttons beim Klicken zu verändern, das ist aber keine schöne Lösung

Re: Visuelles Feedback beim Klicken eines Buttons

Verfasst: Montag 2. August 2021, 08:39
von __deets__
Das sollte alles in der Qt Dokumentation beschrieben sein. Siehe zb hier: https://stackoverflow.com/questions/191 ... lesheet-qt

Re: Visuelles Feedback beim Klicken eines Buttons

Verfasst: Montag 2. August 2021, 11:04
von jcshine
Vielen Dank, der Link hat mir sehr geholfen! Meine Frage ist hiermit beantwortet.