PyQT类e线程

时间:2013-08-28 09:49:48

标签: multithreading class pyqt4

HY, 我正在尝试用PyQT编写一个简单的应用程序,该应用程序基本上显示一个地图,其中Thread类会在主GUI上的“控制台”(一个文本框)中写入一些文本。 当我执行代码时,我遇到以下错误: 类型对象'GoogleMapsExec'没有属性'console'

这是我的代码:

class Modem(threading.Thread):
    def __init__(self, parent = None):
        threading.Thread.__init__(self, parent)

    def run(self):
        a = "this is a thread"
        GoogleMapsExe.console.setText(a)



class GoogleMapsExec(QDialog, Ui_DialogGoogleMaps):

    def __init__(self, parent = None):
        QDialog.__init__(self, parent)
        self.setupUi(self)
        self.MapView.setUrl(QtCore.QUrl("map.com"))
       #self.console.setText("line 1")

    @pyqtSignature("")
    def on_Button_clicked(self):
        t = Modem()
        t.start()


##d = threading.Thread(name='daemon', target=daemon)
##d.setDaemon(True)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    DialogGoogleMaps = GoogleMapsExec()
    DialogGoogleMaps.show()
    sys.exit(app.exec_())

我不理解的是什么?提前谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 您需要在调用实例方法之前实例化GoogleMapsExec,这是您的异常的来源,例如。 GoogleMapsExe().console.setText(a)
  2. 更重要的是,对于使用PyQt进行线程化,您需要使用PyQt的QThread,而不是Python的线程模块。