将变量从一个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
。