2017-04-19 5 views
0

pyQT5에서 첫 번째 GUI를 구축 중이며 Python 프로그래밍이 처음이다.pyqtsignal을 사용하여 하나의 Qthread에서 다른 Qthread로 변수 이동

하나의 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)) 

이것은 프로그램의 일부일 뿐이므로이 문제를 해결하기 위해 열심히 노력한 결과로 다른 오류가있을 수 있습니다.

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

때 :

내 문제는 내가 출력 내가 핸들 함수에서 텍스트를 인쇄 할 때 내가 좋아하는 자신을 제거 할 때 "< 주요 .PosSignals가> 0x72f0c210에 반대"를 얻을 수 있다는 것입니다 나는 자기 자신을 유지한다. print b.handle_string()에 인자를 제공 할 필요가있다. 그런 다음 ofcourse는 내가 추가 한 인자만을 출력한다. 및 클래스 OverPassApi (QThread)에서 사용하는 : 당신은 단순히 handle_string에 대한 self 인수를 잊어처럼

답변

0

가 보이는 내가 무엇을 달성하고자하는

는 GetCurrentSpeed ​​(QThread)에서 만든 위도 변수를 사용하는 것입니다.