[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: Re: [PyQt] Main UI stuck when ping sub thread running
From: 不坏阿峰 <onlydebian () gmail ! com>
Date: 2014-06-26 2:18:05
Message-ID: CA+SSH2pr-k6Tc33_hdeiti9chNjkxnEkfSFMRHeG4io22H-1hA () mail ! gmail ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
thanks both of you , David & Glenn. you are so kind man. i have use
Qthread , Signal and slot to solve it.
thanks to your help on my beginning of Python learning.
2014-06-26 4:17 GMT+07:00 Glenn Ramsey <gr@componic.co.nz>:
> Hi,
>
> It looks like your main thread waits because you are calling join() on the
> worker thread. I suggest you look up the docs for thread.join to see what
> that does.
>
> Glenn
>
>
> On 25/06/14 04:51, 不坏阿峰 wrote:
>
>> any person can help?
>>
>>
>> 2014-06-23 20:05 GMT+07:00 不坏阿峰 <onlydebian@gmail.com
>> <mailto:onlydebian@gmail.com>>:
>>
>>
>> i want to make a tools to diagnosis network. but my Main UI will
>> stuck when
>> ping is running before finish. All i want is that when the sub
>> thread is
>> running, Main UI can use and go to other tab and can do other
>> function.
>>
>> pls help me . many thanks
>>
>> ###########
>> from mychart_ui import Ui_Form
>> import verbose_ping01
>> import threading
>>
>> class MyThread(threading.Thread):
>> def __init__(self, func, args, name=''):
>> threading.Thread.__init__(self)
>> self.name <http://self.name> = name
>>
>> self.func = func
>> self.args = args
>>
>> def run(self):
>> self.res = apply(self.func, self.args)
>>
>> def getRes(self):
>> return self.res
>> def myping(host):
>> result = verbose_ping01.verbose_ping(host, count=500)
>> return result
>>
>> class myWidget(QtGui.QWidget, Ui_Form):
>> def __init__(self,parent=None):
>> QtGui.QWidget.__init__(self, parent)
>> self.setupUi(self)
>> self.pushButton.clicked.connect(self.draw)
>> self.pushButton_ping.clicked.connect(self.doping)
>>
>> def draw(self):
>> print '='
>> sc = MyStaticMplCanvas(self.matwidget, width=2, height=3,
>> dpi=100)
>> sc.show()
>> def doping(self):
>> thisthread = MyThread(myping,("192.168.123.50",))
>> thisthread.start()
>> thisthread.join()
>> time.sleep(0.5)
>> self.pingresult = thisthread.getRes()
>> newtext = "\n".join(self.pingresult)
>> self.pTE_pingresult.setPlainText(newtext)
>>
>> qApp = QtGui.QApplication(sys.argv)
>> aw = myWidget()
>> aw.show()
>> sys.exit(qApp.exec_())
>>
>>
> _______________________________________________
> PyQt mailing list PyQt@riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>
[Attachment #5 (text/html)]
<div dir="ltr">thanks both of you , David & Glenn. you are so kind man. i \
have use Qthread , Signal and slot to solve it. <div>thanks to your help on my \
beginning of Python learning.</div></div><div class="gmail_extra"> <br><br><div \
class="gmail_quote">2014-06-26 4:17 GMT+07:00 Glenn Ramsey <span dir="ltr"><<a \
href="mailto:gr@componic.co.nz" \
target="_blank">gr@componic.co.nz</a>></span>:<br><blockquote class="gmail_quote" \
style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Hi,<br>
<br>
It looks like your main thread waits because you are calling join() on the worker \
thread. I suggest you look up the docs for thread.join to see what that does.<br> \
<br> Glenn<div class=""><br>
<br>
On 25/06/14 04:51, 不坏阿峰 wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div class=""> any person can help?<br>
<br>
<br>
2014-06-23 20:05 GMT+07:00 不坏阿峰 <<a href="mailto:onlydebian@gmail.com" \
target="_blank">onlydebian@gmail.com</a><br></div> <mailto:<a \
href="mailto:onlydebian@gmail.com" \
target="_blank">onlydebian@gmail.com</a>>><u></u>:<div class=""><br> <br>
i want to make a tools to diagnosis network. but my Main UI will stuck when<br>
ping is running before finish. All i want is that when the sub thread is<br>
running, Main UI can use and go to other tab and can do other function.<br>
<br>
pls help me . many thanks<br>
<br>
###########<br>
from mychart_ui import Ui_Form<br>
import verbose_ping01<br>
import threading<br>
<br>
class MyThread(threading.Thread):<br>
def __init__(self, func, args, name=''):<br>
threading.Thread.__init__(<u></u>self)<br></div>
<a href="http://self.name" target="_blank">self.name</a> <<a \
href="http://self.name" target="_blank">http://self.name</a>> = name<div><div \
class="h5"><br> self.func = func<br>
self.args = args<br>
<br>
def run(self):<br>
self.res = apply(self.func, self.args)<br>
<br>
def getRes(self):<br>
return self.res<br>
def myping(host):<br>
result = verbose_ping01.verbose_ping(<u></u>host, count=500)<br>
return result<br>
<br>
class myWidget(QtGui.QWidget, Ui_Form):<br>
def __init__(self,parent=None):<br>
QtGui.QWidget.__init__(self, parent)<br>
self.setupUi(self)<br>
self.pushButton.clicked.<u></u>connect(self.draw)<br>
self.pushButton_ping.clicked.<u></u>connect(self.doping)<br>
<br>
def draw(self):<br>
print '='<br>
sc = MyStaticMplCanvas(self.<u></u>matwidget, width=2, height=3, \
dpi=100)<br> sc.show()<br>
def doping(self):<br>
thisthread = \
MyThread(myping,("192.168.123.<u></u>50",))<br> thisthread.start()<br>
thisthread.join()<br>
time.sleep(0.5)<br>
self.pingresult = thisthread.getRes()<br>
newtext = "\n".join(self.pingresult)<br>
self.pTE_pingresult.<u></u>setPlainText(newtext)<br>
<br>
qApp = QtGui.QApplication(sys.argv)<br>
aw = myWidget()<br>
aw.show()<br>
sys.exit(qApp.exec_())<br>
<br>
</div></div></blockquote><div class="HOEnZb"><div class="h5">
<br>
______________________________<u></u>_________________<br>
PyQt mailing list <a href="mailto:PyQt@riverbankcomputing.com" \
target="_blank">PyQt@riverbankcomputing.com</a><br> <a \
href="http://www.riverbankcomputing.com/mailman/listinfo/pyqt" \
target="_blank">http://www.riverbankcomputing.<u></u>com/mailman/listinfo/pyqt</a></div></div></blockquote></div><br></div>
[Attachment #6 (text/plain)]
_______________________________________________
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