将变量从一个Qthread移动到另一个pyqtsignal

问题描述:

我在pyQT5中构建了我的第一个GUI,而且我对Python编程还很陌生。将变量从一个Qthread移动到另一个pyqtsignal

我想在一个Qthread中使用一个变量集并在另一个中使用它。我认为pyqtsignal是做到这一点的方法。但我无法实现它的工作。

class GetCurrentSpeed(QThread): 
    gpsLatSig = pyqtSignal(str) 

    def __init__(self): 
     QThread.__init__(self) 

    def __del__(self): 
     self.wait() 

    def run(self): 
     while True: 
      ####Print a value in lon and lat so that its never empty 
       lon = "18" 
       lat = "59" 

      ###Get Current Latitude and Longitude 
       if report['class'] == 'TPV': 
          if hasattr(report, 'lat'): 
           lat = (str(report.lat)) 
           self.gpsLatSig.emit(lat) 
          else: 
           lat = "59" 
           print("No GPS Lock") 
           self.gpsLatSig.emit(lat) 

class PosSignals(QObject): 
    GetGps = GetCurrentSpeed() 

    def connectsig(self): 
     self.GetGps.gpsLatSig[str].connect(self.handle_string) 

    @pyqtSlot(str) 
    def handle_string(self, text): 
     print text 

class OverPassApi(QThread): 
    GetGps = GetCurrentSpeed() 


    def __init__(self): 
     QThread.__init__(self) 
     self.b = PosSignals() 


    def __del__(self): 
     self.wait() 

    def run(self): 
     while True: 
       self.b.connectsig() 
       print b.handle_string() 

       api = overpy.Overpass() 
       result = api.query("""<osm-script> 
       <query type="way"> 
         <around lat="%s" lon="%s" radius="30"/> 
         <has-kv k="name" v=""/> 
        </query> 
        <print/> 
       </osm-script>""" % (b.handle_string, 18)) 

这只是程序的一部分,这可能包含其他错误,因为我一直在努力工作。

我的问题是,我得到的输出“< 主要 .PosSignals对象在0x72f0c210>”当我尝试打印在手柄功能的文字时,我删除自身,如:

@pyqtSlot(str) 
    def handle_string(text): 
     print text 

当我保持自我,我需要提供一个参数给print b.handle_string(),然后当然只打印我添加的参数。

我想达到的目标是使用GetCurrentSpeed(的QThread)创建的LAT变量:和类OverPassApi(QThread的)使用它:

看起来你只是忘了self论据handle_string