QT window closes immediately

News123 news1234 at free.fr
Tue Nov 16 20:19:53 EST 2010


On 11/15/2010 02:04 AM, Martin Caum wrote:
> I am attempting to open a window on mouse activity which works, but
> the window fails to stay open.
> I set it to terminate when the escape key is pressed even when the
> program is not currently selected. This works fine. Originally I had
> it create the window only with a right click, but when I noticed the
> window closed immediately I set it to any mouse activity for easier
> debugging. My script is as follows:
> [code]
> import pythoncom, pyHook
> import sys
> import win32api
> from PyQt4 import QtGui, QtCore
> 
> class WindowObject(QtGui.QWidget):
> 	def __init__(self, parent=None):
> 		QtGui.QWidget.__init__(self, parent)
> 		self.setWindowTitle('Window')
> 		self.resize(50, 250)
> 
> def OnKeyboardEvent(event):
> 	if event.KeyID == 27:
> 		win32api.PostQuitMessage()
> 	return 1
> 
> def OnMouseEvent(event):
> 	x = event.Position[0]
> 	y = event.Position[1]
> 	createWindow(x, y)
> 	return 1
> 
> def createWindow(x, y):
> 	menu = WindowObject()
> 	menu.move(x, y)
> 	menu.show()
> 
> hm = pyHook.HookManager()
> hm.MouseAll = OnMouseEvent
> hm.KeyDown = OnKeyboardEvent
> hm.HookMouse()
> hm.HookKeyboard()
> 
> app = QtGui.QApplication(sys.argv)
> pythoncom.PumpMessages()[/code]
> I'm fairly certain that this is due to my lack of understanding in the
> PumpMessages command and the HookManager. Any advice?


Shouldn't every QT application have an event loop.

I would have expecte a call to app._exec()

as you need already pumpMessages() fro the COM interface, I assume you
had to use the threading or multiprocessing module as well.





More information about the Python-list mailing list