[PyQt] Catching exceptions everywhere
Lukas Hetzenecker
LuHe at gmx.at
Thu May 7 16:32:26 BST 2009
Hello,
you could redirect the interpreter’s standard error output stream:
sys.stderr = YourClass(window.edit, sys.__stderr__, QColor(Qt.red))
YourClass in an "file-like" object (it has an write function)
window.edit is an instance of Qt's QTextEdit class and is used to display the
message.
Here is an example: http://series60-remote.svn.sf.net/viewvc/series60-
remote/trunk/pc/series60-remote.py?view=markup , line 288
The class QtOutput is defined here: http://series60-
remote.svn.sf.net/viewvc/series60-
remote/trunk/pc/lib/log.py?revision=257&view=markup , line 36
And the window that actually displays an error message is here:
http://series60-remote.svn.sf.net/viewvc/series60-
remote/trunk/pc/window/log.py?view=markup
A screenshot is here:
http://imagebin.ca/view/5rSa--2X.html
The Traceback is colored red in the window.
Starting with this is should be easy to get a "report bug"-dialog ;-)
If you have any questions please just ask.
Greetings,
Lukas
Am Donnerstag 07 Mai 2009 13:17:54 schrieb Jeremy Sanders:
> Is there a way to catch Python exceptions in all parts of a PyQt program?
>
> I have a "report bug" dialog box which gets called if an exception occurs
> in the most frequently used parts of my program, but it would be nice if I
> could catch every unhandled exception globally.
>
> The really nice thing about python is that program tends to keep running
> despite an exception in a slot, so we don't get immediate data loss.
>
> Thanks
>
> Jeremy
More information about the PyQt
mailing list