#!/usr/bin/env python
import sys
from qt import *
class PyQMainWindow( QMainWindow ):
def __init__( self, parent = None, name = None, fl = 0 ):
QMainWindow.__init__( self, parent, name, fl )
self.setCaption( self.tr ('Traceback Test') )
buttonGroup = QButtonGroup( self.tr ('Traceback Test'), self, 'group' )
global multiLineEdit
multiLineEdit = QMultiLineEdit( buttonGroup, 'edit' )
multiLineEdit.insertLine ( "In PyQApplication.exec_loop()..." )
badButton = QPushButton( self.tr ('&Error'), buttonGroup, 'bad' )
quitButton = QPushButton( self.tr ('&Quit'), buttonGroup, 'quit' )
vBoxLayout = QVBoxLayout( buttonGroup )
vBoxLayout.addWidget( multiLineEdit )
vBoxLayout.addWidget( badButton )
vBoxLayout.addWidget( quitButton )
self.connect( badButton, SIGNAL ('clicked()'), badFunc )
self.connect( quitButton, SIGNAL ('clicked()'), self, SLOT ('close()') )
self.setCentralWidget( buttonGroup )
def badFunc():
try:
assert bob, 'NameError'
except NameError, args:
lines = '%s: %s' % ( args.__class__.__name__, args )
multiLineEdit.insertLine( lines )
def main( *args ):
app = QApplication( *args )
win = PyQMainWindow( None, 'main', Qt.WDestructiveClose )
win.resize( 300, 50 )
app.setMainWidget( win )
win.show()
app.connect( app, SIGNAL ('lastWindowClosed()'),
app, SLOT ('quit()') )
app.exec_loop()
if __name__ == "__main__":
main( sys.argv )
-- Curtis Taylor SupplySolution, Inc. 911 Olive Street Santa Barbara CA 93101 805.879.7264
PGP Fingerprint: 5A61 444C 71C2 8EAE 7268 A78A F41F A503 00A5 234DOn 06 Sep 2001 12:00:04 +0200, [EMAIL PROTECTED] wrote:
>
> Send PyKDE mailing list submissions to
> [EMAIL PROTECTED]
>
> To subscribe or unsubscribe via the web, visit
> http://mats.gmd.de/mailman/listinfo/pykde
> or, via email, send a message with subject or body 'help' to
> [EMAIL PROTECTED]
> You can reach the person managing the list at
> [EMAIL PROTECTED]
>
> When replying, please edit your Subject line so it is more specific than
> "Re: Contents of PyKDE digest..."
>
>
> Today's Topics:
>
> 1. How to capture python tracebacks? (Dave Smith)
>
> --__--__--
>
> Message: 1
> Date: Wed, 05 Sep 2001 17:31:43 -0400
> From: Dave Smith <[EMAIL PROTECTED]>
> Organization: TranscenData -- an ITI Business
> To: PyQt/KDE Mailing List <[EMAIL PROTECTED]>
> boundary="------------9D4B0167909B3E56AFB44BFD"
> Subject: [PyKDE] How to capture python tracebacks?
>
> This is a multi-part message in MIME format.
> --------------9D4B0167909B3E56AFB44BFD
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit
>
> Hello all,
>
> I'm trying to figure out a way to capture python traceback
> messages that are apparently caught in the pyqt event loop
> and issued to stdout.
>
> For example, in the attached sample program, I would like
> the tracebacks that occur when the 'Error' button is clicked
> to be displayed in the multi line edit as well as stdout.
>
> I thought about implementing the event loop in my PyQApplication
> sub-class but could not find enough info to do it. Has anyone
> else done this?
>
> Any other ideas?
>
> Best regards,
> Dave
>
>
> --------------9D4B0167909B3E56AFB44BFD
> Content-Type: text/plain; charset=us-ascii;
> name="qtexc.py"
> Content-Transfer-Encoding: 7bit
> Content-Disposition: inline;
> filename="qtexc.py"
>
> #!/usr/bin/env python
>
> import os
> import sys
> import string
> import traceback
> from qt import *
>
> class PyQApplication (QApplication):
> def __init__ (self, argv):
> QApplication.__init__ (self, argv)
>
> def exec_loop (self):
> global multiLineEdit
> multiLineEdit.insertLine ("In PyQApplication.exec_loop()...")
> QApplication.exec_loop (self)
>
> class PyQMainWindow (QMainWindow):
>
> def __init__ (self, parent = None, name = None, fl = 0):
> QMainWindow.__init__ (self, parent, name, fl)
> self.setCaption (self.tr ('Traceback Test'))
> buttonGroup = QButtonGroup (self.tr ('Traceback Test'), self, 'group')
> vBoxLayout = QVBoxLayout (buttonGroup)
> global multiLineEdit
> multiLineEdit = QMultiLineEdit (buttonGroup, 'edit')
> vBoxLayout.addWidget (multiLineEdit)
> badButton = QPushButton (self.tr ('&Error'), buttonGroup, 'bad')
> vBoxLayout.addWidget (badButton)
> self.connect (badButton, SIGNAL ('clicked()'), badFunc)
> quitButton = QPushButton (self.tr ('&Quit'), buttonGroup, 'quit')
> vBoxLayout.addWidget (quitButton)
> self.connect (quitButton, SIGNAL ('clicked()'), self, SLOT ('close()'))
> self.setCentralWidget (buttonGroup)
>
> def getTraceback():
> lines = traceback.format_exception (sys.exc_type, sys.exc_value,
> sys.exc_traceback)
> return string.join (lines, '')
>
> def badFunc():
> RaiseNameError
>
> def main():
>
> try:
> badFunc()
> except:
> print '-'*77
> print getTraceback()
> print '-'*77
>
> appTopLevel = PyQApplication (sys.argv)
> appMainWin = PyQMainWindow (None, 'main', Qt.WDestructiveClose)
> appMainWin.show()
> appTopLevel.connect (appTopLevel, SIGNAL ('lastWindowClosed()'),
> appTopLevel, SLOT ('quit()'))
> appTopLevel.exec_loop()
>
> if __name__ == "__main__" : main()
>
>
> --------------9D4B0167909B3E56AFB44BFD--
>
>
>
>
> --__--__--
>
> _______________________________________________
> PyKDE mailing list
> [EMAIL PROTECTED]
> http://mats.gmd.de/mailman/listinfo/pykde
>
>
> End of PyKDE Digest