Ich habe mich nach einer Weile endlich mal wieder aufgemacht was zu programmieren und mich endlich mal an GUIs gewagt. Dabei bin ich auf quickly gestossen und komm damit bisher sehr gut zurecht.
Jetzt bin ich dabei einen Bearbeitungsdialog meiner Datensätze zu schreiben.
Dafür muss ich die Daten vom Hauptfenster ins Bearbeitenfenster weitergeben, was ich nach etwas basteln durch Ergänzung der __init__ - Funktion des Bearbeiungsfensters auch hinbekommen habe.
leider bekomme ich trotzdem (obwohl die daten da sind, und das Skript nicht abbricht) immer noch ein TypeError (s.u.),
den ich nicht einordnen kann.
Beim Suchen bin ich nur darauf gestossen, das es irgendwas it einer Superklasse zu tun hat, habe aber keine Lösung gefunden.
Nun also der Code und schonmal vielen Dank fürs reindenken.
die Klasse des Bearbeitungsfensters:
Code: Alles auswählen
class EditDialog(gtk.Dialog):
__gtype_name__ = "EditDialog"
_data= ''
def __init__(self, data, parent=None):
pass
def __new__(cls, data, p=None):
builder = get_builder('EditDialog')
new_object = builder.get_object('edit_dialog')
new_object.finish_initializing(builder, data)
return new_object
def finish_initializing(self, builder, data):+
self.builder = builder
self.builder.connect_signals(self)
self._data = data
self.set_data(self._data)
def set_data(self, d):
print 'set: '
print d['thema']
def get_changes(self):
print 'changes: ', self._data['thema']
Code: Alles auswählen
def edit(self, widget, data=None):
d = {'thema': 'Thema'}
edit = EditDialog.EditDialog(d, None)
result = edit.run()
data = edit.get_changes()
edit.destroy()
if result != gtk.RESPONSE_OK:
return
else:
print data
Code: Alles auswählen
TypeError: __init__() takes at least 2 arguments (1 given)
set:
Thema
...