• <tfoot id='0km7T'></tfoot>
      <i id='0km7T'><tr id='0km7T'><dt id='0km7T'><q id='0km7T'><span id='0km7T'><b id='0km7T'><form id='0km7T'><ins id='0km7T'></ins><ul id='0km7T'></ul><sub id='0km7T'></sub></form><legend id='0km7T'></legend><bdo id='0km7T'><pre id='0km7T'><center id='0km7T'></center></pre></bdo></b><th id='0km7T'></th></span></q></dt></tr></i><div id='0km7T'><tfoot id='0km7T'></tfoot><dl id='0km7T'><fieldset id='0km7T'></fieldset></dl></div>

      <small id='0km7T'></small><noframes id='0km7T'>

        <legend id='0km7T'><style id='0km7T'><dir id='0km7T'><q id='0km7T'></q></dir></style></legend>
          <bdo id='0km7T'></bdo><ul id='0km7T'></ul>

        如何使用 PyQt5 运行 while 循环

        时间:2023-08-04

        <small id='BlnR9'></small><noframes id='BlnR9'>

          <tbody id='BlnR9'></tbody>
          <bdo id='BlnR9'></bdo><ul id='BlnR9'></ul>
            1. <i id='BlnR9'><tr id='BlnR9'><dt id='BlnR9'><q id='BlnR9'><span id='BlnR9'><b id='BlnR9'><form id='BlnR9'><ins id='BlnR9'></ins><ul id='BlnR9'></ul><sub id='BlnR9'></sub></form><legend id='BlnR9'></legend><bdo id='BlnR9'><pre id='BlnR9'><center id='BlnR9'></center></pre></bdo></b><th id='BlnR9'></th></span></q></dt></tr></i><div id='BlnR9'><tfoot id='BlnR9'></tfoot><dl id='BlnR9'><fieldset id='BlnR9'></fieldset></dl></div>
            2. <legend id='BlnR9'><style id='BlnR9'><dir id='BlnR9'><q id='BlnR9'></q></dir></style></legend>

                  <tfoot id='BlnR9'></tfoot>
                  本文介绍了如何使用 PyQt5 运行 while 循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我在一个项目上工作:程序下载但我在使用 while 循环时遇到问题,用于检查与 Internet 的连接,如果 true 不 setText('') to lable 和 if Flase setText('anyText') to lable

                  I work on one Project : Program download but I have a problem with while loop for check the connection with the internet and if true doesn't setText('') to lable and if Flase setText('anyText') to lable

                  连接检查方法

                      def checkInternetConnection(self,host="8.8.8.8", port=53, timeout=3):
                  
                      while self.conection==False:
                          try:
                              socket.setdefaulttimeout(timeout)
                              socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port))
                              self.conection = True
                              return self.conection
                  
                          except Exception as e:
                                  print(e)
                                  self.label_9.setText('Please Check Internect Connection')
                                  self.conection = False
                                  return self.conection
                      self.finished.emit()
                  

                  我已经厌倦了 QThread .请问我该怎么做:)?如果连接丢失=False setText('check internet') 以及连接变为 true 时,应用程序正在运行时 setText('')

                  I have tired with QThread . Please How I can do it :) ? And when app is running if connection is lost=False setText('check internet') and when the connection become true setText('')

                  构造者

                  From_Class,_=loadUiType(os.path.join(os.path.dirname(__file__),'designe.ui'))
                  class mainApp(QMainWindow,From_Class):
                      finished = pyqtSignal()
                      def __init__(self,parent=None):
                          super(mainApp, self).__init__(parent)
                          QMainWindow.__init__(self)
                          super().setupUi(self)
                          self.handleGui()
                          self.handleButton()
                          self.setWindowIcon(QIcon('mainIcon.png'))
                          self.menuBarW()
                          self.conection = False
                  

                  主代码

                  def main():
                      app = QApplication(sys.argv)
                      window = mainApp()
                      window.checkInternetConnection()
                      window.show()
                      app.exec()
                  
                  if __name__=='__main__':
                      main()
                  

                  推荐答案

                  QThread不要太复杂,使用线程库:

                  Do not get complicated with QThread, use the threading library:

                  def main():
                      app = QtWidgets.QApplication(sys.argv)
                      window = mainApp()
                      threading.Thread(target=window.checkInternetConnection, daemon=True).start()
                      window.show()
                      app.exec()
                  

                  另一方面,由于您使用的是线程,因此不应从另一个线程更新 GUI,为此您可以使用 QMetaObject::invokeMethod:

                  On the other hand, since you are using a thread, you should not update the GUI from another thread, for this you can use QMetaObject::invokeMethod:

                  def checkInternetConnection(self,host="8.8.8.8", port=53, timeout=3):
                      while True:
                          try:
                              socket.setdefaulttimeout(timeout)
                              socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port))
                              self.conection = True
                          except Exception as e:
                              self.conection = False
                              print(e)
                          msg = "" if self.conection else 'Please Check Internect Connection'
                          print("msg", msg)
                          QtCore.QMetaObject.invokeMethod(self.label_9, "setText",
                              QtCore.Qt.QueuedConnection,  
                              QtCore.Q_ARG(str, msg))
                      self.finished.emit()
                  

                  这篇关于如何使用 PyQt5 运行 while 循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:在按钮按下的滚动区域中加载 QTableWidgets 下一篇:QLabel &amp;自动换行:如何以逗号为基础换行(与

                  相关文章

                  最新文章

                1. <small id='fY71R'></small><noframes id='fY71R'>

                  <legend id='fY71R'><style id='fY71R'><dir id='fY71R'><q id='fY71R'></q></dir></style></legend>

                    <tfoot id='fY71R'></tfoot>

                    1. <i id='fY71R'><tr id='fY71R'><dt id='fY71R'><q id='fY71R'><span id='fY71R'><b id='fY71R'><form id='fY71R'><ins id='fY71R'></ins><ul id='fY71R'></ul><sub id='fY71R'></sub></form><legend id='fY71R'></legend><bdo id='fY71R'><pre id='fY71R'><center id='fY71R'></center></pre></bdo></b><th id='fY71R'></th></span></q></dt></tr></i><div id='fY71R'><tfoot id='fY71R'></tfoot><dl id='fY71R'><fieldset id='fY71R'></fieldset></dl></div>
                      • <bdo id='fY71R'></bdo><ul id='fY71R'></ul>