[Python-de] Testen, ob Variabel existiert

Diez B. Roggisch deets at web.de
Son Sep 5 17:10:47 CEST 2004


> for wm in wms:
>     rb = wm
>     for path in paths:
>         if access(path+'/'+wm, X_OK):
>             if group:
>                 rb = gtk.RadioButton(label = wm, group = group)
>             else:
>                 rb = gtk.RadioButton(label = wm)
>                 group = rb
>             vbox1.pack_start(rb)
>             rbs.append(rb)
>             break

Schon fast perfekt - statt path + '/' + wm solltest du aber os.path.join 
verwenden - das ist erstens Plattformunabhaengig (fuer dich vielleicht nicht 
se wichtig, aber guter Stil schadet nie) und ausserdem sollte das auch mit 
Sonderfaellen besser klarkommen, zB Pfaden mit / am Ende.

>
> Mein ursprüngliches Problem habe ich dann so gelöst.
>
> for rb in rbs:
>     if rb.get_active() == True:
>         wm = rb.get_label()
>         system(wm)
>         break

Hier bietet sich eher an, stattdessen eine Map von rb auf wm aufzubauen - denn 
das Label kann ja zb auch mal anders aussehen, zB "KDE" oder so. 

Dazu musst du nur

wms = {}

anlegen und nach der Zeile 

>             vbox1.pack_start(rb)

wms[rb] = wm 

machen. Du kannst dann mit 

wms[rb] 

darauf zugreifen in deinem snippet oben.

Diez