Solved: TypeError: startView() takes exactly 1 argument (3 given)

Ron Croonenberg ronc at depauw.edu
Wed Dec 30 12:01:51 EST 2009


ok, problem solved.

In the directory the plugin lives I have(had) a directory called 
'backup' to save things just in case I mess up.

Guess what, RB apparently looks into that directory too and uses the 
class, py file, it finds there instead of the one I am making changes to.

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
> 

-- 
==================================================================
main(p){printf(p,34,p="main(p){printf(p,34,p=%c%s%c,34); }",34); }
==================================================================
Ron Croonenberg                   |
                                   | Phone: 1 765 658 4761
Lab Instructor &                  | Fax:   1 765 658 4732
         Technology Coordinator    |
                                   |
Department of Computer Science    | e-mail: ronc at DePauw.edu
DePauw University                 |
275 Julian Science & Math Center  |
602 South College Ave.            |
Greencastle, IN  46135            |
==================================================================




More information about the Python-list mailing list