[PyKDE] Proper way to show multiple windows?

Ingo Krabbe i.krabbe at dokom.net
Sun Jan 26 08:39:01 GMT 2003


On Sat, Jan 25, 2003 at 07:30:43AM -0800, star gazer wrote:
> Ken,
>  
> I did the isModal() check and it returned 0 but using
> nw.show() does not leave the window up it just flashes
> away.  If I use nw.exec_loop() then the window stays
> up but I can't open another on.  This was so easy to
> do in wxpython.  It must be as easy here I just can't
> figure it out
> 
> SG

Using a used to tool (wxpython) should always be simple, but it isn't
very hard to do a modal dialog in PyQt too !

That the window flashes is because you might create a local instance,
which is destroyed at function exit !!!

You have to store your window either in a global reference or put it
into a list of known windows, where you can delete it once you don't
need it anymore (that's what I do).

def open_modal_window(self):
	self.controlledServers.append( ServerControlOv( self,
					self, "Server Control", 0, 0) )
	x = len(self.controlledServers)-1
	self.controlledServers[x].show()

It is quite easy to use container facilities of python.  But most
applications will be happy with static allocation:

dialogA=None
def open_modal_window(parent, control):
	global dialogA
	dialogA = ServerControlOv( parent, control,
		"Server Control", 0, 0) )
	dialogA.show()

Anyway you have to use a variable that lives longer than your open
function.




More information about the PyQt mailing list