我可以使用槽函数的 return 语句来为不同的“lambda”槽提供输入吗?
我知道以下内容不起作用 - 因为 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
我确信这样的事情是可能的,而且我的大脑严重冻结。
提前非常感谢您的帮助
QObject.connect
的返回值只是一个布尔值,指示连接是成功还是失败。与槽的返回值无关
从您的示例代码看来,您希望一步从用户那里获取一些文件名,然后在单独的第二步中处理它们。
为了做到这一点,文件名需要保存在某个地方,直到用户决定开始处理步骤。一种常见的方法是在列表小部件或行编辑组中显示选定的文件名,以便以后可以检索它们。或者,文件名可以简单地附加到内部列表(即类实例的私有属性)。
X = QtCore.QObject.connect(self.actionOpenX, OtCore.SIGNAL("triggered()", self.file_dialog)
始终返回一个布尔值,所以为什么不尝试使用像global x
这样的全局变量并在file_dialog中设置x值?