我正在使用一个应用程序,我已经与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")