擅长:python、mysql、java
<p>我来帮你把代码分解一下。在</p>
<pre><code>#in main file
MenuElem = menu.MenuManager
</code></pre>
<p>这里您将<code>MenuElem</code>设置为指向<code>menu.MenuManager</code>类。可能您打算在这里初始化对象,使<code>MenuElem</code>成为<code>menu.MenuManager</code>类的<strong>实例</strong>。从而调用了<code>MenuManager</code>类的<code>__init__</code>函数。因此,代码应为:</p>
^{pr2}$
<p>下一个出问题的地方在这里:</p>
<pre><code>def file_open_clicked(self, widget):
</code></pre>
<p>如果我们检查<a href="http://lazka.github.io/pgi-docs/index.html#Gio-2.0/classes/SimpleAction.html#Gio.SimpleAction.signals.activate" rel="nofollow" title="docs">docs</a>的<code>activate</code>信号,我们会发现它有2个参数。所以目前没有初始化对象<code>self</code>被设置为第一个参数,即<code>SimpleAction</code>,而{<cd10>}被设置为激活<code>parameter</code>。在</p>
<p>但是现在我们已经初始化了<code>MenuManager</code>对象,<code>file_open_clicked</code>函数将获得3个输入参数,即<code>self</code>、<code>SimpleAction</code>和{<cd11>}。因此,我们需要这样接受它们:</p>
<pre><code>def file_open_clicked(self, simpleAction, parameter):
</code></pre>
<p>现在代码的工作原理是<code>self</code>实际上是一个具有<code>TreeView</code>属性的对象。(仅供参考,Python中的变量和属性通常都是小写的)</p>