Seite 1 von 1
Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 08:26
von Nobuddy
Hallo zusammen,
habe hier einen Beispielcode zu Pushbutton.
Code: Alles auswählen
#!/usr/bin/python
import os
import sys
from PyQt5.QtWidgets import (
QWidget,
QPushButton,
QHBoxLayout,
QVBoxLayout,
QApplication
)
class ButtonBar(QWidget):
def __init__(self):
super(ButtonBar, self).__init__()
hbox = QHBoxLayout()
hbox.addStretch(1)
for button in ['Ok', 'Cancel']:
btn = QPushButton(self)
btn.setText(button)
btn.clicked.connect(self.senderContactButton)
hbox.addWidget(btn)
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
self.buttonBarLayout = vbox
self.setLayout(self.buttonBarLayout)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('Buttons')
self.show()
def senderContactButton(self):
button = self.sender()
print("button: ", button.text())
def main():
app = QApplication(sys.argv)
ex = ButtonBar()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Nach dem Start, ist der Ok-Button markiert, beim Betätigen des Cancel-Button ist dieser markiert. Das ist wohl das normale Verhalten.
Nun hätte ich gern, dass kein Button beim Start markiert ist und beim Betätigen eines Buttons, bei diesem danach keine Markierung angezeigt wird.
Leider hat mir das Googeln bei diesem Thema, keine Lösung aufgezeigt, daher würde ich mich über Eure Unterstützung freuen!
Grüße Nobuddy
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 08:39
von Sirius3
Das ist das normale Verhalten, dass man erkennen kann, welches Widget gerade den Fokus hat. Ohne diese Darstellung wäre ein Bedienen der GUI mit der Tastatur unmöglich.
Warum willst Du also von dem Standardverhalten, das zwingend nötig ist und das jeder kennt und es auch nicht anders erwarten würde, abweichen?
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 09:13
von Nobuddy
Vielleicht, ist dann Pushbutton nicht das Richtige, wenn das Bedienen der GUI mit der Tastatur unmöglich ist.
Bei Tkinter ist das nicht der Fall. Dort ist das Verhalten so, dass nach dem Klicken des Button, dieser danach wieder in den vorherigen Ausgangszustand geht.
Welche Alternative gibt es in Qt dazu?
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 09:32
von __blackjack__
@Nobuddy: Das bedienen ist ja möglich, Du willst das anscheinend ändern, also zumindest erschweren. Und hast die Frage nach dem Warum nicht beantwortet.
Bei Tk wird bei mir auch die Schaltfläche, die den Fokus hat, visuell gekennzeichnet, und das geht selbstverständlich auch nicht weg wenn man drauf klickt. (Solange das nicht dazu führt, das ein anderes Element den Fokus bekommt.)
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 09:44
von Nobuddy
Warum nicht, will ich beantworten.
Ist für mich einfach irritierend. Ich entscheide durch Betätigen eines Buttons, eine Aufgabe auszuführen und danach evtl. einen weiteren Button. Eine Kenntlichmachung, welchen Button ich zuletzt betätigt habe, brauche ich nicht und will ich auch eigentlich nicht.
Bei Tk, habe ich die Möglichkeit dieses gewünschte Verhalten zu etablieren.
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 10:11
von Nobuddy
Wenn das Bedienen bei Pushbutton durch mein angestrebtes Verhalten möglich ist, wie kann ich das umsetzen?
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 13:12
von __deets__
Du kannst in die Styling-Optionen gucken, du kannst kuenstlich den Focus wegnehmen nach dem Klick, und du kannst einen eigenen Button bauen, der sich anders verhaelt.
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 13:20
von Nobuddy
Mit Stytesheet, habe ich es schon versucht, wahrscheinlich habe ich da nicht den richtigen Ansatz gefunden.
Mein Stylesheet zu Pushbutton:
Code: Alles auswählen
QPushButton {
background-color: rgb(169,169,169);
color: rgb(255,255,255);
}
QPushButton:pressed {
background-color : rgb(169,169,169);
color: rgb(255,255,255);
}
QPushButton:hover {
background-color : lightgreen;
color: black;
}
Wie mache ich das bei Qt, kuenstlich den Focus nach dem Klick wegnehmen?
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 13:28
von Nobuddy
Zu Stylesheet, habe ich diese Lösung gefunden:
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 15:30
von sparrow
Und wie genau soll man das Programm jetzt mit der Tastatur bedienen?
Gar nicht mehr?
Oder ist muss man raten, wo gerade der Fokus sitzt?
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 15:55
von Nobuddy
Wo soll da ein Problem sein?
In diesem kleinen Beispiel klicke ich auf 'Ok' oder 'Cancel' und das tut es auch.
Man muss auch nicht raten, nur lesen, was auf dem Button steht.

Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Dienstag 25. Oktober 2022, 16:28
von __deets__
Die Frage ist halt, ob du der einzige Benutzer deines Programmes bist, der da natuerlich jedwede Praeferenz reinhacken kann. Oder ob du ein Programm schreibst, das andere Benutzer ggf. eben mit der Tastatur benutzen wollen, und jetzt ist das nicht mehr sinnvoll moeglich. Und ich bin zB so jemand. Jeder Griff zur Maus ist verschwendete Lebenszeit. Sich also auf etablierte Konventionen zu stuetzen macht es Benutzern einfacher.
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Mittwoch 26. Oktober 2022, 09:29
von Nobuddy
Habe wohl versäumt, den Nutzen genauer zu erklären.
Das Beispiel mit den Buttons 'Ok' und 'Cancel', trifft nicht den eigentlichen Verwendungszweck. Es handelt sich vielmehr um benutzerspezifische Button.
Bei nicht benutzerspezischen Buttons, wie 'Ok' und 'Cancel', macht das Standardverhalten Sinn und werde das selbst auch beibehalten.
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Mittwoch 26. Oktober 2022, 09:55
von __deets__
Was heisst denn "benutzerspezifisch"? Alle moeglichen Arten von Dialogen zB in Windows benutze ich mit der Tastatur. Nicht nur die finalen Buttons Ok/Cancel (die sind ja sogar dann oft noch extra auf enter/esc gemappt).
Am Ende geht es mir nur um eines: wenn du der einzige Benutzer deines Tools bist, mach es wie du willst. Beschreib die Knoepfe senkrecht in Kisuaheli, etc pp. Aber wenn es eine Zielgruppe gibt, die nicht nur aus dir bestehst, solltest du Verwirrung *bei denen* vermeiden. Und nicht davon ausgehen, dass deine Art, mit der GUI zu arbeiten, die einzige ist. Wir betreiben grossen Aufwand, um unsere Produkte (Hard- und Software) einem Publikum aus "Fremden" so frueh wie moeglich zu zeigen, um solche Fehler zu vermeiden. Das ist fuer ein privates Projekt eher ungewoehnlich, wuerde ich auch nicht machen. Aber wenigestens ein paar Leuten sollte man das an sich schon zeigen. Oder sich eben damit abfinden, dass es nur fuer einen selbst ist, das ist ja auch ok.
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Mittwoch 26. Oktober 2022, 10:44
von Nobuddy
Ich lass mir das nochmals durch den Kopf gehen, da Deine Argumente richtig sind

Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Mittwoch 26. Oktober 2022, 12:31
von __blackjack__
Wenn man GUIs nicht nur für sich selbst entwirft, sollte man auch ganz generell mal schauen wie andere (Standard-)Programme das handhaben die man benutzt. Man selbst benutzt ja meisten nur einen Weg für eine bestimmte Aktion, aber sehr oft gibt es mehrere Wege eine Aktion auszulösen, und die sind ja auch für irgendwen, der das dann immer *so* macht, und das am praktischsten findet. So einfache Sachen wie kopieren und/oder einfügen gibt es ja beispielsweise in allem möglichen Anwendungen. Die sind in der Regel über Tastaturkürzel, über ein Bearbeiten-Menü, über grafische Schaltflächen in einer Werkzeugleiste, und oft noch mal über ein Kontextmenü über die rechte Maustaste dort wo man was kopieren/einfügen kann, erreichbar. Kaum eine Person wird all diese Varianten benutzen, aber viele Personen werden ein oder zwei von den Varianten verwenden, und finden Programme die *ihre Varianten* dann nicht unterstützen irgendwie umständlich(er) zu bedienen.
Re: Pushbutton - Layoutverhalten anpassen
Verfasst: Freitag 28. Oktober 2022, 15:12
von Nobuddy
Hallo, wollte mich nochmals kurz zurückmelden.
Ihr habt mich überzeugt, das Standardverhalten zu verwenden.
Danke für Eure Bemühung, dies mir zu verdeutlichen !
Grüße Nobuddy