与Dash一起使用时如何避免QFileDialog打开两次

问题描述

我将文件存储在“归档”文件夹内的子文件夹中,该文件用于重新加载之前创建的Dash可视化文件。即这些文件plot_infosplot1.pickleplot2.pickle。要使用这些文件,我正在浏览到QFileDialog.getExistingDirectory

所在的子文件夹。

我在代码的第一部分中使用:

import dash
import dash_html_components as html
import dash_core_components as dcc
import dash_table

import pandas as pd
import pickle

from PyQt5.QtWidgets import QFileDialog,QApplication

from dash.dependencies import Input,Output

import plotly.graph_objs as go

import os
import sys

ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

app = QApplication(sys.argv)

Archive_path = str(QFileDialog.getExistingDirectory(None,'Select Archive',os.path.join(ROOT_DIR,'Archives')))

with open('{}/plot_infos'.format(Archive_path),'rb') as fp:
    infos = pickle.load(fp) 

加载第一个文件

但是后来,我正在使用:

@app.callback(
   Output('comparison-graph','figure'),[Input('period-selector','value'),Input('special-selector','value')])
def update_graph(period_value,special_condition):
       dff = pd.read_pickle('{0}/plot1.pickle'.format(Archive_path))
       dff2 = pd.read_pickle('{0}/plot2.pickle'.format(Archive_path))

加载其他两个文件

它按我的预期工作,但QFileDialog会打开两次,所以我必须选择两次文件夹,否则Dash可视化将不会重新加载。

我知道我应该将从QFileDialog获得的路径存储为字符串,但是尽管Archive_path是用Archive_path = str(QFileDialog.getExistingDirectory(None,'Archives')))定义的,但似乎每次使用cuddN_STATUS_BAD_ParaM代码都会调用QFileDialog。

我应该怎么做才能使QFileDialog仅打开一次并将所选文件夹的路径存储为字符串值,而不是两次调用QFileDialog?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)