[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 &amp; 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">&lt;<a \
href="mailto:gr@componic.co.nz" \
target="_blank">gr@componic.co.nz</a>&gt;</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 不坏阿峰 &lt;<a href="mailto:onlydebian@gmail.com" \
target="_blank">onlydebian@gmail.com</a><br></div> &lt;mailto:<a \
href="mailto:onlydebian@gmail.com" \
target="_blank">onlydebian@gmail.com</a>&gt;&gt;<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=&#39;&#39;):<br>
                    threading.Thread.__init__(<u></u>self)<br></div>
      <a href="http://self.name" target="_blank">self.name</a> &lt;<a \
href="http://self.name" target="_blank">http://self.name</a>&gt; = 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   &#39;=&#39;<br>
                    sc = MyStaticMplCanvas(self.<u></u>matwidget, width=2, height=3, \
dpi=100)<br>  sc.show()<br>
              def doping(self):<br>
                    thisthread = \
MyThread(myping,(&quot;192.168.123.<u></u>50&quot;,))<br>  thisthread.start()<br>
                    thisthread.join()<br>
                    time.sleep(0.5)<br>
                    self.pingresult = thisthread.getRes()<br>
                    newtext = &quot;\n&quot;.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