PyQt 将文件名传递给常用函数

问题描述 投票:0回答:2

我可以使用槽函数的 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

我确信这样的事情是可能的,而且我的大脑严重冻结。

提前非常感谢您的帮助

python pyqt signals-slots qfiledialog
2个回答
1
投票

QObject.connect
的返回值只是一个布尔值,指示连接是成功还是失败。与槽的返回值无关

从您的示例代码看来,您希望一步从用户那里获取一些文件名,然后在单独的第二步中处理它们。

为了做到这一点,文件名需要保存在某个地方,直到用户决定开始处理步骤。一种常见的方法是在列表小部件或行编辑组中显示选定的文件名,以便以后可以检索它们。或者,文件名可以简单地附加到内部列表(即类实例的私有属性)。


0
投票

X = QtCore.QObject.connect(self.actionOpenX, OtCore.SIGNAL("triggered()", self.file_dialog)
始终返回一个布尔值,所以为什么不尝试使用像
global x
这样的全局变量并在file_dialog中设置x值?

© www.soinside.com 2019 - 2024. All rights reserved.