python - Gio SimpleAction to call a function -
i have made menu using gio action in gtk3 app. menu item created as:
#in main file menuelem = menu.menumanager # open menu action = gio.simpleaction(name="open") action.connect("activate", menuelem.file_open_clicked) self.add_action(action)
the file_open_clicked
in menu.py
, class menumanager
, defined as:
import gi import pybib import view gi.require_version("gtk", "3.0") gi.repository import gtk class menumanager: def __init__(self): self.parsing = pybib.parser() self.treeview = view.treeview() #file_open_clicked #in menu.py def file_open_clicked(self, widget): dialog = gtk.filechooserdialog("open existing fine", none, gtk.filechooseraction.open, (gtk.stock_cancel, gtk.responsetype.cancel, gtk.stock_open, gtk.responsetype.ok)) response = dialog.run() if response == gtk.responsetype.ok: filename = dialog.get_filename() dialog.destroy() self.treeview.bookstore.clear() self.treeview.viewer(self.parsing.booklist) # self.treeview.view.set_model() elif response == gtk.responsetype.cancel: print("cancel clicked") dialog.destroy()
i getting error:
traceback (most recent call last): file "/home/rudra/devel/mkbib/python/src/menu.py", line 81, in file_open_clicked self.treeview.bookstore.clear() attributeerror: 'simpleaction' object has no attribute 'treeview'
i know simpleaction
takes 1 more option, , treeview
should called. dont know how. kindly help
let me break down code you.
#in main file menuelem = menu.menumanager
here set menuelem
point menu.menumanager
class. meant initialize object here such menuelem
become instance of menu.menumanager
class. such __init__
function of menumanager
class called. code should be:
#in main file menuelem = menu.menumanager()
then next part goes wrong in here:
def file_open_clicked(self, widget):
if check docs activate
signal see has 2 parameters. without initializing object self
set first parameter namely simpleaction
, widget
set activation parameter
.
but have initialized menumanager
object, file_open_clicked
function 3 input parameters namely self
, simpleaction
, parameter
. need accept them this:
def file_open_clicked(self, simpleaction, parameter):
now code work self
object attribute treeview
. (just information in python variables , attributes written in lowercase)
Comments
Post a Comment