[pygtk] About Dialog Issues

Nigel Tao nigel.tao at myrealbox.com
Thu Sep 15 07:44:13 WST 2005


On Wed, 2005-09-14 at 12:21 -0400, Mystilleef wrote:
> =====================================================
> 
> import gtk
> from gnome import url_show
> 
> gtk.about_dialog_set_url_hook(url_show, "http://www.google.com")
> 
> def create_about_dialog():
> 	
> 	dialog = gtk.AboutDialog()
> 	dialog.set_website_label("http://www.google.com")
> 	dialog.show_all()
> 	
> 	return dialog
> 
> =====================================================
> 
> When I click on the link on the dialog, I get the following
> error:
> 
> TypeError: url_show() takes exactly 1 argument (3 given)
> 
> 
> As you can see, I have passed exactly one argument to 
> url_show. What am I doing wrong?

url_show takes 1 argument, but the callback from
about_dialog_set_url_hook should take 3.  Thus, 3 args are being fed to
url_hook, which only takes one.  Thus, your error message.

Working version:
=====================================================
#!/usr/bin/env python

import gtk
from gnome import url_show

dialog = gtk.AboutDialog()

def foo(dialog, arg2, arg3):
	print dialog
	print arg2
	print arg3
	#url_show(arg2)

gtk.about_dialog_set_url_hook(foo, "arg3")
dialog.set_website("arg2")
dialog.set_website_label("http://www.google.com")
dialog.show_all()

gtk.main()
=====================================================

Or, since arg3 is optional, you can do something like
=====================================================
gtk.about_dialog_set_url_hook(lambda dialog, url: url_show(url))
dialog.set_website("http://www.google.com")
dialog.set_website_label("http://www.google.com")
=====================================================


Nigel.


More information about the pygtk mailing list