Gibt es eine Möglichkeit, alle Optionsfelder in einer Gruppe zu deaktivieren? (PyGTK)

8

Gibt es eine Möglichkeit, alle Optionsfelder in einer Gruppe mit PyGTK zu deaktivieren? Beim Start werden keine Optionsfelder überprüft. Daher muss es meiner Meinung nach möglich sein, alle Optionsfelder in diesen deaktivierten Zustand zurückzuversetzen.

    
linkmaster03 21.11.2009, 01:13
quelle

4 Antworten

2

Es sollte nicht sein. Eine Optionsfeldgruppe ist ihrer Art nach eine "Auswahl von vielen". Aus einer menschlichen Perspektive ist die Idee, dass einer von ihnen immer ausgewählt wird. Das Framework sollte das wirklich durchsetzen, also sollte es für die Gruppe wirklich keinen "nicht ausgewählten" Status geben. Der nicht ausgewählte Status einer Optionsfeldgruppe (in Frameworks, in denen dies möglich ist) ist für die Benutzer sehr verwirrend, da dies kein Status ist, in den sie die Steuerung übernehmen können.

Wenn Sie den Status 'Keine ausgewählt' haben möchten, sollten Sie der Gruppe ein Element 'none' hinzufügen ODER einen anderen Steuerelementtyp auswählen, der dem entspricht, was Sie damit tun möchten.

    
Michael Kohne 21.11.2009, 01:30
quelle
6

Ich stimme Michael zu, aber für die Aufzeichnung kann dies getan werden.

Eine Möglichkeit, dies zu tun, wäre, einen versteckten Radiobutton zu haben, den Sie aktivieren könnten, der dann alle sichtbaren inaktivieren würde. Quick n 'Dirty Beispiel:

%Vor%     
Alvin Row 21.11.2009 02:08
quelle
1

Hat im Quellcode nachgesehen und set_active simuliert einfach einen Klick auf die Schaltfläche, wenn sich der neue Zustand von dem alten unterscheidet. Der Optionsfeldcode prüft dann, ob in der Gruppe ein anderer Optionsschalter aktiv ist. Ist dies nicht der Fall, weigert er sich, wie Sie es bemerken, zu ändern.

Wie es aussieht, sollte die erste Optionsschaltfläche immer aktiviert sein, wenn Sie die Gruppe (wie erwartet) erstellen. Wenn es nicht angezeigt wird, ist es wahrscheinlich ein Fehler, es wäre interessant zu sehen, ob radio_button.get_active ist True für die erste Schaltfläche, die Sie erstellen (auch wenn es nicht in der Benutzeroberfläche angezeigt wird).

Ich stimme Michael Kohne zwar zu, dass Sie in ein anderes UI-Element schauen sollten, wenn Sie alle Optionsfelder deaktivieren möchten.

    
hallski 21.11.2009 01:25
quelle
1

Meine Lösung, die vor allem nicht empfohlen wird, ist ein Optionsfeld in derselben Gruppe, das nicht auf dem Bildschirm angezeigt wird.

In Glade können Sie 'Widget als Toplevel hinzufügen' im Kontextmenü der Widget-Schaltfläche hinzufügen. In Code würde ich imaging es ist im Grunde nur nicht das Widget zu einem angezeigten GUI, oder vorsichtig nicht .show () es (einschließlich. Showall () auf einem Elternteil)

    
ThorSummoner 07.09.2015 01:53
quelle

Tags und Links