[Python-de] Testen, ob Variabel existiert

Marcus Habermehl bmh1980de at yahoo.de
Don Sep 9 13:27:55 CEST 2004


Am Don, den 09.09.2004 um 1:36 Uhr +0200 schrieb Diez B. Roggisch:
> > Denke mal, dass ich wohl doch was von euch gelernt habe und das auch
> > umgesetzt habe ohne um zehn Ecken zu gehen.
> 
> Sieht soweit ganz gut aus, mit Ausnahme der Methode startwm. Statt ueber die 
> radiobuttons zu suchen, wuerde ich fuer jeden Button ein command 
> registrieren, das ausgefuehrt wird wenn der Button geclickt wird und das dann 
> ihn oder seinen wm global setzt. Damit entfaellt dann die Suche ueber alle 
> Buttons (die bei komplizierteren widget-architekturen auch schwieriger wird)

Habe mein Skript jetzt so abgeändert.

# Globale Variabeln
...
wms = {}

# Widgets des Hauptfensters
...
for section in configparser.sections():
    for p in PATH:
        if os.access(os.path.join(p, configparser.get(section, 'Exec')),
os.X_OK):
            label = configparser.get(section, 'Label')
            rb = label
            if group:
                rb = gtk.RadioButton(label = label, group = group)
            else:
                rb = gtk.RadioButton(label = label)
                group = rb
            vbox1.pack_start(rb)
            rbs.append(rb)
            wms[label] = configparser.get(section, 'Exec')
            break

# Funktion des Okay-Buttons
def startwm(*args):
    for rb in rbs:
        if rb.get_active() == True:
            window.hide()
            while gtk.events_pending():
                gtk.main_iteration()
            os.system(wms [rb.get_label()])
            window.show_all()
            break

Und der Rest wie gehabt.

Musste zwar ne Weile überlegen, bis ich auf die Lösung kam, aber ich bin
drauf gekommen. *freu* ;-)

Ich weiß zwar nicht, ob ich das in paar Wochen noch verstehe, aber das
lässt sich ja mir zusätzlichen Kommentaren oder einer Art Howto lösen.

Gruß

Marcus