我可以使用slot函数的return语句为不同的'lambda'd'插槽提供输入吗?
以下我认为不起作用的东西 - 因为X和Y似乎只是布尔值:
class : mainwindow(QtGui.QMainWindow, Ui_test):
def __init__ (self, parent = None):
super(mainwindow,self).__init__(parent)
self.setupUi(self)
X = QtCore.QObject.connect(self.actionOpenX, OtCore.SIGNAL("triggered()", self.file_dialog)
Y = QtCore.QObject.connect(self.actionOpenY, OtCore.SIGNAL("triggered()", self.file_dialog)
QtCore.QObject.connect(self.actionProcess, QtCore.SIGNAL("triggered()", lambda : self.updateUi(X,Y))
def update_Ui(self, X, Y):
for line in X:
for line in Y:
"do something"
def file_dialog(self)
filedlg = QtGui.QFileDialog(self)
self.filename = filedlg.getOpenFileName()
return self.filename
我确信这样的事情是可能的,而且我有严重的大脑冻结现象。
非常感谢您的任何帮助
答案 0 :(得分:1)
QObject.connect
的返回值只是一个布尔值,表示连接是成功还是失败。它与插槽的返回值无关。
从您的示例代码中可以看出,您希望在一个步骤中从用户获取一些文件名,然后在单独的第二步中处理它们。
为了做到这一点,文件名需要保留在某处,直到用户决定开始处理步骤。一种常见的方法是在列表小部件或行编辑组中显示所选的文件名,以便以后检索它们。或者,文件名可以简单地附加到内部列表(即类实例的私有属性)。
答案 1 :(得分:0)
X = QtCore.QObject.connect(self.actionOpenX, OtCore.SIGNAL("triggered()", self.file_dialog)
总是返回一个bool值,为什么不尝试使用像global x
这样的全局变量并在file_dialog中设置x值?