Da ich keine Sektion für PyGTK gefunden hab, poste ich das Problem mal hier rein.
Das Problem: Wenn in einen Knopf mit einer Funktion verbinde (connect),
lassen sich keine Argumente übergeben ohne Fehler zu verursachen.
Code: Alles auswählen
#!/usr/bin/env python
import gtk,pygtk
pygtk.require('2.0')
import os,sys,commands,subprocess
def crypt_mount(mount):
OPEN_CMD='cryptsetup luksOpen ';TARGET=' LV04'
CMD_ALL=OPEN_CMD + mount + TARGET
print(CMD_ALL)
cmd_process = subprocess.Popen(OPEN_CMD + mount + TARGET, stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
result = cmd_process.communicate()[0]
print result
DEVICE='/dev/mapper/VG00-LV04'
window = gtk.Window()
window.set_size_request(300,-1)
window.set_title("Crypt devices")
window.set_resizable(True)
window.set_position(gtk.WIN_POS_CENTER)
vbox = gtk.VBox(False, 0)
vbox.show()
window.add(vbox)
button = gtk.Button(DEVICE)
button.connect("clicked", crypt_mount(DEVICE))
vbox.pack_start(button)
button.show()
-----------
cryptsetup luksOpen /dev/mapper/VG00-LV04 LV04
Traceback (most recent call last):
File "./args.py", line 26, in <module>
button.connect("clicked", crypt_mount(DEVICE))
TypeError: second argument must be callable
-----------
Wenn ich der Funktion "crypt_mount" nichts übergebe, kommt kein Fehler.
Folgende Weise funktioniert auch nicht.
Code: Alles auswählen
button.connect("clicked", crypt_mount(), DEVICE)
0 angegeben.
Bisher hab ich es vermieden, im Callback (connect) Argumente zu übergeben - kennt jemand einen Weg wie das geht. Ich bin nach 2h googlen am Ende mit dem Latein.
Danke.