0

嗨,我正在尝试用 PyQT 编写一个简单的应用程序,它基本上显示一个地图,其中一个线程类将在主 GUI 上的一个文本框“控制台”中写入一些文本。当我执行代码时出现以下错误:type object 'GoogleMapsExec' has no attribute '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_())

我不明白什么?提前致谢!

4

1 回答 1

0
  1. 您需要先实例化 GoogleMapsExec,然后才能调用实例方法,这是您的异常的来源,例如。GoogleMapsExe().console.setText(a)
  2. 更重要的是,要使用 PyQt 进行线程化,您需要 PyQt 的QThread,而不是 Python 的线程模块。
于 2013-09-02T01:48:59.727 回答