私はPyGTKで作業しています.GUIのシグナル(関数Gladeを使ってXMLで書かれたボタンの1つ)をバインドしようとすると、次のエラー:pygtk - B1()は引数が1つしかありません(与えられた2つ)
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkWindow" id="GW1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="GB1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkButton" id="B1">
<property name="label" translatable="yes">button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="on_B1_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="B2">
<property name="label" translatable="yes">button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="B3">
<property name="label" translatable="yes">button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<child>
<placeholder/>
</child>
</object>
</interface>
興味深いP:
ここ#!/usr/bin/python2
import pygtk
pygtk.require('2.0')
from gi.repository import Gtk as gtk
class Main():
def __init__(self):
self.builder = gtk.Builder()
self.builder.add_from_file('/home/jatin/button.glade')
self.MainWindow = self.builder.get_object('GW1')
if self.MainWindow:
self.MainWindow.connect("destroy", gtk.main_quit)
dic = {
'on_B1_clicked' : self.B1,
'on_B2_clicked' : self.B2,
'on_B3_clicked' : self.B3
}
self.builder.connect_signals(dic)
def B1(self):
return('ham')
def B2(self):
return('ham')
def B3(self):
return('ham')
M = Main()
gtk.main()
は私のグレイドファイルである:ここでは
TypeError: B1() takes exactly 1 argument (2 given)
は私のPythonコードであります
ゼロで引数:芸術は、私は渡されたargumetsの数を変更した場合、エラーメッセージは次のように変化することである
TypeError: B1() takes no arguments (2 given)
私はエラーを取得していないが、機能は行いません2つの引数をどのようにそれはそうなっている。 3つ以上の引数で:
TypeError: B1() takes 3 arguments (2 given)
いいえ。ごめんなさい。私は次回それをやるでしょう。何が間違っているのかについてのアイデア? –
私はあなたが使っているライブラリについて聞いたことがありません。 'B1'はどこに呼び出されていますか?私はあなたのメソッドが暗黙の 'self'sを取るに過ぎないのに、ライブラリが明示的な引数を渡そうとしていると思われます。 – Carcigenicate
これはGUIライブラリです。 Linuxの場合は、XMLファイルをbutton.glade、pythonファイルをbutton.pyとして保存し、3つのボタンを含むウィンドウを起動します。ここでは、ボタン1が押されたとき(B1というラベルが付いているとき)、B1という関数を実行すると定義しています。 –