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.
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.
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.
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)