[pygtk] Geting a window/dialog to appear on a different screen.

Neil Dugan pygtk at butterflystitches.com.au
Wed Jun 4 12:51:24 WST 2008


Hi,

I have a LTSP set-up here.  I would like to put a window or dialog on =

the client screens, but I can't seem to get this to happen I am =

getting weird errors from gtk.main().

See attachment for the code.

The errors I am getting are
/media/tmp/testgui:43: GtkWarning: gdk_screen_get_display: assertion =

`GDK_IS_SCREEN (screen)' failed
   gtk.main()
/media/tmp/testgui:43: GtkWarning: gdk_keymap_get_for_display: =

assertion `GDK_IS_DISPLAY (display)' failed
   gtk.main()
/media/tmp/testgui:43: Warning: invalid (NULL) pointer instance
   gtk.main()
/media/tmp/testgui:43: Warning: g_signal_connect_data: assertion =

`G_TYPE_CHECK_INSTANCE (instance)' failed
   gtk.main()
Traceback (most recent call last):
   File "/media/tmp/testgui", line 43, in <module>
     gtk.main()


If I comment out line 20 =

"window.set_screen(display.get_screen(screen))" all works as expected.

Any help appreciated.

Regards Neil.
-------------- next part --------------
#!/usr/bin/python



import pygtk
pygtk.require('2.0')
import gtk
import sys
import os
import tempfile
import stat
import gobject

def Window(display_name,screen,filename):
	print "display =3D %s  screen %d" % (display_name,screen)
	display =3D gtk.gdk.Display(display_name)
	# create a window
	window =3D  gtk.Window(gtk.WINDOW_TOPLEVEL)
	# make sure it appears on correct display
	window.set_screen(display.get_screen(screen))
	window.connect("destroy",  lambda w: w.destroy())
	window.filename =3D filename
	# setup the widgets
	vbox =3D gtk.VBox()
	window.add(vbox)
	label =3D gtk.Label(filename)
	vbox.pack_start(label, False, False)
	entry =3D gtk.Entry()
	vbox.pack_start(entry, False, False)
	button =3D gtk.Button('_Text')
	vbox.pack_start(button, False, False)
	button.connect('clicked', get_text, entry, window)
	# display the window
	window.show_all()

def get_text(widget, number, window) :
	print "number =3D %s   file =3D %s" % (number.get_text(), window.filename)
	window.destroy()
	=


if __name__ =3D=3D "__main__":
	Window(':0',0,'/tmp/file.txt')
	gtk.main()



More information about the pygtk mailing list