将数据从一个fucntion传递到另一个Fucntion.Python



我正在使用一个应用程序,我已经与QT5创建者一起制作了UI。我的功能绑定到按钮。

self.dataChooseBtn.clicked.connect(self.selectFile)
self.data_processing.clicked.connect(self.process)
def selectFile(self):    
    options = QFileDialog.Options()
    options |= QFileDialog.DontUseNativeDialog
    fileName, _ = QFileDialog.getOpenFileName(self,"Выберите стандартизированную выборку", "","All Files (*);;Python Files (*.py)", options=options)
    if fileName:
        print(fileName)
        return fileName

按下此按钮时,我会得到一个对话框窗口,可以选择一个文件。

另外,我有一个函数,该功能应该处理所选文件。现在,文件及其名称的路径是硬编码。

def process(self):
    file_location = "/Users/Graygood/Desktop/Science comput/Application/Sheet.xlsx"
    sample = pd.read_excel('Sheet.xlsx', sheetname ='Sheet1', index_col=None, na_values=['NA'])

我想要的是获取selectFile()函数的输出(通过单击触发((例如:/users/graygood/desktop/science Comput/application/sheet.xlsx( 并将其插入process()函数(也由单击触发(,而无需再次触发对话框窗口。如果我只在 process()中调用 selectFile()函数,就会发生这种情况。

def process(self):
    fileName = self.selectFile()
    file_location = fileName
    sample = pd.read_excel('Sheet.xlsx', sheetname ='Sheet1', index_col=None, na_values=['NA'])

您应该将文件名用作类属性,因此存储您的文件名,以便能够跟踪是否要重复使用而不将其传递给所有功能。

只需要将selectFile更改为:

def selectFile(self):    
    options = QFileDialog.Options()
    options |= QFileDialog.DontUseNativeDialog
    fileName, _ = QFileDialog.getOpenFileName(self,"Выберите стандартизированную выборку", "","All Files (*);;Python Files (*.py)", options=options)
    if fileName:
        print(fileName)
        self.fileName = fileName

,然后在process(self)中致电self.fileName

要避免错误,您还应在 INIT 方法中声明它:self.fileName = None,并始终在尝试使用它之前测试self.fileName是否存在。

希望这个帮助。

您需要做的就是单击按钮上的打开文件路径。并在file_path上调用过程方法

def selectFile(self):    
    options = QFileDialog.Options()
    options |= QFileDialog.DontUseNativeDialog
    # read the file path
    file_path, _ = QFileDialog.getOpenFileName(self,"Выберите стандартизированную выборку", "","All Files (*);;Python Files (*.py)", options=options)
    if file_path:
        # print the file_path and call process on it.
        print(file_path)
        self.process(file_path)
        return file_path
def process(self, file_path):
    # read the file at path and process it
    sample = pd.read_excel(file_path, sheetname ='Sheet1', index_col=None, na_values=['NA'])
    print("processed")

相关内容

  • 没有找到相关文章

最新更新