Estou usando o Quickly e criei a janela principal e uma caixa de diálogo. Na janela principal, estou configurando o acesso ao banco de dados (u1db) no método finish_initializing (self.db = ...). Depois de uma ação eu abro um diálogo onde preciso acessar o banco de dados.
Eu pensei que eu poderia usar self.get_parent () no diálogo para obter uma instância da janela principal e acessar o banco de dados, mas o valor de retorno de get_parent () é None.
Minha pergunta é: como posso acessar a instância da janela pai na caixa de diálogo ou onde devo colocar a instância do wrapper do banco de dados?
Código abreviado:
# GuitestWindow.py
class GuitestWindow(Window):
def finish_initializing(self, builder):
...
self.db = u1db.open(
db_path,
create=True
)
def on_addaccountbutton_clicked(self, widget):
dialog = NewAccountDialog.NewAccountDialog(db=self.db)
result = dialog.run()
dialog.hide()
# NewAccountDialog.py
class NewAccountDialog(Gtk.Dialog):
__gtype_name__ = "NewAccountDialog"
def __new__(cls, *args, **kwargs):
print "__new__: %s : %s" % (args, kwargs)
builder = get_builder('NewAccountDialog')
new_object = builder.get_object('new_account_dialog')
new_object.finish_initializing(builder)
print "__new__ end"
return new_object
def __init__(self, *args, **kwargs):
print "__init__: %s : %s" % (args, kwargs)
self.db = kwargs.get('db')
super(NewAccountDialog, self).__init__(*args, **kwargs)
print "__init__ end"
Resultado:
__new__: () : {'db': <u1db.backends.sqlite_backend.SQLitePartialExpandDatabase object at 0x1884f50>}
__init__: () : {}
__init__ end
__new__ end
__init__: () : {'db': <u1db.backends.sqlite_backend.SQLitePartialExpandDatabase object at 0x1884f50>}
__init__ end