我有以下代码:
class Functions(QObject):
mysig = Signal(filename)
def __init__(self, parent=None):
super(Functions, self).__init__(parent)
self.result = None
def showDialog(self, filename):
self.mysig.emit(filename)
def grabResult(self):
while not self.result:
time.sleep(5)
return result #this is the question
def setResult(self, result):
self.result = result
代码的另一部分是这样的:
class Dialog(QDialog):
anotherSig = Signal(str)
fun = Functions()
def __init__(self, parent=None, filename=filename):
self.filename = filename
#Here it displays a picture based on the filename parameter
def okButtonClicked(self):
text = self.lineedit.text()
fun.setResult(text)
#Tried also this:
self.anotherSig.emit(text)
该类Functions()
是从工作人员QThread
(此处未显示)调用的。
我想我的问题是这样的:我如何告诉我的Functions
班级用户已经输入了文本并单击了 OK 按钮?我尝试连接该anotherSig
信号,但是当我尝试这样做时,Qt 抱怨 QPixmaps 从不同的线程设置不安全,并且它不起作用。
我在这里使用的方法“有效”,但我觉得它不是很可靠。另外,它仅在Functions
类中的所有相关方法都有效时才有效@classmethod
- 这样,由于某种原因,它不起作用。被setResult
调用(我添加了一个print
声明以确保),但grabResult
仍然显示self.result
为None
.