[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: [PyQt] QxtSignalWaiter
From: "Jason Hihn" <jason () eyemaginations ! com>
Date: 2007-07-29 18:40:58
Message-ID: 200707291844.l6TIisvt031133 () s68901 ! eyemaginations ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
Not completely 100% compatible, but here you all go.
------
from PyQt4.Qt import *
class QxtSignalWaiter(QObject):
def __init__(self, sender, signal):
apply(QObject.__init__, (self, ) + ())
self.connect(sender, SIGNAL(signal),
self.signalCaught)
def waitFor(self, sender, signal, msec):
'''Returns True if the signal was caught, returns
False if the wait timed out'''
w=QxtSignalWaiter(sender, signal)
return w.waitUpTo(msec)
def waitUpTo(self, msec):
''' Returns True if the signal was caught, returns
False if the wait timed out'''
if(msec < -1):
return False
if(msec != -1):
self.timerID = self.startTimer(msec)
self.ready = self.timeout = False
while(self.ready==False and self.timeout==False):
QCoreApplication.processEvents(QEventLoop.WaitForMoreEvents)
self.killTimer(self.timerID)
return self.ready or self.timeout
def signalCaught(self):
self.ready = True
def timerEvent(self, event):
self.killTimer(self.timerID)
self.timeout = True
if __name__=='__main__':
def done(int):
print 'done(%s)' % int
import sys
a=QApplication(sys.argv)
http=QHttp('google.com')
w=QxtSignalWaiter(http, 'done(bool)')
QObject.connect(http, SIGNAL('done(bool)'), done)
http.get("/")
w.waitUpTo(5000)
[Attachment #5 (text/html)]
<html xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman";}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{color:purple;
text-decoration:underline;}
p
{mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman";}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:Tahoma;
color:windowtext;
font-weight:normal;
font-style:normal;
text-decoration:none none;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
{page:Section1;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'>Not completely 100% compatible, but here you all \
go.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'>------<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'>from PyQt4.Qt import * <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'>class QxtSignalWaiter(QObject):<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
def __init__(self, sender, signal):<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
apply(QObject.__init__, (self, ) + ())<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
self.connect(sender, SIGNAL(signal), self.signalCaught)<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> def \
waitFor(self, sender, signal, msec):<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
'''Returns True if the signal was caught, returns False if the wait timed \
out'''<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
w=QxtSignalWaiter(sender, signal)<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
return w.waitUpTo(msec)<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
def waitUpTo(self, msec):<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
''' Returns True if the signal was caught, returns False if the wait timed \
out'''<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
if(msec < -1): <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
\
return False<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
if(msec != -1): <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
\
self.timerID = self.startTimer(msec)<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
self.ready = self.timeout = False<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
while(self.ready==False and self.timeout==False):<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
QCoreApplication.processEvents(QEventLoop.WaitForMoreEvents)<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
self.killTimer(self.timerID)<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
return self.ready or self.timeout<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
def signalCaught(self): \
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
self.ready = True<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
def timerEvent(self, event):<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
self.killTimer(self.timerID)<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
self.timeout = True<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'>if __name__=='__main__':<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
def done(int):<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
print 'done(%s)' % int<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
</span></font><font size=2 face=Tahoma><span lang=FR \
style='font-size:10.0pt;font-family:Tahoma'>import sys<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span lang=FR style='font-size:
10.0pt;font-family:Tahoma'> \
a=QApplication(sys.argv)<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span lang=FR style='font-size:
10.0pt;font-family:Tahoma'> \
http=QHttp('google.com')<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span lang=FR style='font-size:
10.0pt;font-family:Tahoma'> \
</span></font><font size=2 face=Tahoma><span \
style='font-size:10.0pt;font-family:Tahoma'>w=QxtSignalWaiter(http, \
'done(bool)') \
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
QObject.connect(http, SIGNAL('done(bool)'), \
done) \
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
http.get("/")<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
w.waitUpTo(5000)<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma'> \
<o:p></o:p></span></font></p>
</div>
</body>
</html>
_______________________________________________
PyQt mailing list PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic