Dave Angel wrote:
Ron Croonenberg wrote:
<div class="moz-text-flowed" style="font-family: -moz-fixed">Hello,
I am trying to write a plugin for Rhythmbox in python and run into a
'strange' problem. For a method (an action for clicking a button) I
started a method and however many arguments I use, it keeps giving me
the same error:
'TypeError: startView() takes exactly 1 argument (3 given)'
does someone have any pointers or tips?, thanks;
Ron
here is the code I have the problem with:
import rb
import pygtk
import gtk, gobject
pygtk.require('2.0')
class tb_button (rb.Plugin):
#
# the init thing
#
def __init__(self):
rb.Plugin.__init__(self)
#
# the activate thing
#
def activate(self, shell):
self.shell = shell
view_button = """
<ui>
<toolbar name="ToolBar">
<placeholder name="View">
<toolitem name="View" action="viewAction">
</toolitem>
</placeholder>
</toolbar>
</ui>
"""
# create a new action
action = gtk.Action('viewAction',
_(' _View'),
_('Browse Track '), "")
# connect it
action.connect('activate', self.startView, shell)
action_group = gtk.ActionGroup('NewActionGroup')
action_group.add_action(action)
shell.get_ui_manager().insert_action_group(action_group)
# add it to the toolbar
ui_manager = shell.get_ui_manager()
ui_manager.add_ui_from_string(view_button)
#
# Start the View
#
def startView(self, widget, shell, se):
# nothing yet
return
Please give the complete error traceback, and make sure it matches the
code you post. I'm guessing that the subset of the error message you're
quoting occurs when you define startView() as taking only self as a
parameter.
A quick caveat. I'm not familiar with GTK in particular, but I
recognize the paradigm. You're defining an event handler (startView).
And you define a certain set of parameters (not arguments), presently
called self, widge, shell, and se.
But you're not calling it, you're connecting it to an action. So when
that action triggers (or event happens), the GUI system will call your
event handler. You don't control the arguments it passes, and
apparently it passes 3. So you need to change the formal parameters in
your def to match.
More specifically what are those parameters ? I don't know, but you
should be able to tell from sample pyGTK sources, or somebody else can
chime in. And maybe I'm totally nuts here.
DaveA
Hello Dave,
I don't think you're nuts *lol*. Actually I have been thinking along a
similar line. (although I am new to python and probably thinking along C
lines too much)
I saw some postings/articles that I found with google mentioning a
python bug with that behavior. (However I think that the chances of me
running into a bug vs me making a mistake is probably 1:9999)
What I think is weird though is that it doesn't matter how many
parameters I put there. The error msg is still the same. (it doesn't
matter if I actually put 1, 2, 3, 4 or even 5 there. the message is
exactly the same. 'expecting 1 given 3'
I changed the debug level to see if I could get more messages.
(It is a rhythmbox plugin, for debugging I have to start is with
something like 'GST_DEBUG=3 rhythmbox &>log-file')
If I change the debug level to 5 or so I still only get that one error
msg and nothing else. (yes surprised me too)
Ron
--
http://mail.python.org/mailman/listinfo/python-list