我在Gtk3应用程序中使用Gio操作制作了菜单。 菜单项创建为:
#in main file
MenuElem = menu.MenuManager
# Open Menu
action = Gio.SimpleAction(name="open")
action.connect("activate", MenuElem.file_open_clicked)
self.add_action(action)
file_open_clicked
位于menu.py
,class MenuManager
,定义为:
我收到错误:
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'
我知道SimpleAction
还有一个选项,应该调用TreeView
。
但我不知道怎么做。
请帮忙
您的问题是,
TreeView
属性只存在于MenuManager
类上,而当您调用file_open_clicked
方法时,第一个参数(self
)是创建的SimpleAction
对象。使用MenuManager
实例的file_open_clicked
方法可以解决这个问题。在我来帮你把代码分解一下。在
这里您将
^{pr2}$MenuElem
设置为指向menu.MenuManager
类。可能您打算在这里初始化对象,使MenuElem
成为menu.MenuManager
类的实例。从而调用了MenuManager
类的__init__
函数。因此,代码应为:下一个出问题的地方在这里:
如果我们检查docs的}被设置为激活
activate
信号,我们会发现它有2个参数。所以目前没有初始化对象self
被设置为第一个参数,即SimpleAction
,而{parameter
。在但是现在我们已经初始化了}。因此,我们需要这样接受它们:
MenuManager
对象,file_open_clicked
函数将获得3个输入参数,即self
、SimpleAction
和{现在代码的工作原理是
self
实际上是一个具有TreeView
属性的对象。(仅供参考,Python中的变量和属性通常都是小写的)相关问题 更多 >
编程相关推荐