如何根据用户对下拉菜单的响应定义要使用的文件?

时间:2019-07-31 14:02:50

标签: python function user-interface

我有一个Gooey GUI,用户可以在其中输入单个文件,其中包含有关将折旧的资产的一些信息。但是,折旧方法因国家/地区而异。因此,我还添加了一个下拉按钮,以便用户可以选择国家/地区。

这是我到目前为止(不包括进口商品)的代码:

@Gooey(program_name="DEPRECIATION")
def parse_args():
    parser = GooeyParser()

    parser.add_argument('Fixed_Assets_File',
                        action='store',
                        widget='FileChooser',
                        help="Excel file with all fixed assets to depreciate")

    parser.add_argument('Country',
                        widget='Dropdown',
                        choices=['Germany','France','Norway',
                                 'Poland','UK','NL','Sweden',
                                 'Russia','Spain',],
                        help="Choose the country")

    parser.add_argument('Output_File_Name',
                        action='store',
                        help="Name of the output file with .xlsx")

    args = parser.parse_args()
    return args
def country_selection(mapping_file):
    if 'Germany' in args.Country:
        mapping = pd.read_excel("germany_depreciation.xlsx")
    elif 'France' in args.Country:
        mapping = pd.read_excel("france_depreciation.xlsx")
    elif 'Norway' in args.Country:
        mapping = pd.read_excel("norway_depreciation.xlsx")
    elif 'Poland' in args.Country:
        mapping = pd.read_excel("poland_depreciation.xlsx")
    elif 'UK' in args.Country:
        mapping = pd.read_excel("uk_depreciation.xlsx")
    elif 'NL' in args.Country:
        mapping = pd.read_excel("nl_depreciation.xlsx")
    elif 'Sweden' in args.Country:
        mapping = pd.read_excel("sweden_depreciation.xlsx")
    elif 'Russia' in args.Country:
        mapping = pd.read_excel("russia_depreciation.xlsx")
    elif 'Spain' in args.Country:
        mapping = pd.read_excel("spain_depreciation.xlsx")

if __name__ == '__main__':
    args = parse_args()
    assets = args.Fixed_Assets_File
    country = args.Country
    print("You chose", country)

您可能已经注意到,每个国家/地区都有一个主文件,其中包含所有必要的信息以及资产的不同类别。我已经有要为公式/折旧计算实现的代码。我可以将其复制并粘贴到每个if语句中,但这会使代码非常长。

是否可以告诉Gooey / Python根据用户在下拉按钮中选择的国家/地区选择要导入的文件?

例如:如果他们选择波兰,则所有其他主文件都将被忽略,仅导入波兰并将其定义为“映射”

ps:当我说主文件时,是指从excel导入的文件,其格式为:nameofthecountry_depreciation.xlsx

1 个答案:

答案 0 :(得分:0)

您可以创建将国家/地区与相应主文件链接的字典。

mapping = pd.read_excel(country_mapping[args.Country])

然后您可以致电:

country_selection()

然后,您可以删除功能country_mapping

您还可以使用country_mapping.keys()格通过调用//Express body parser app.use(express.urlencoded({ extended: true })); app.use(cookieParser()); app.use(express.json()); //Express Session app.use(session({ secret: 'secret', resave: true, saveUninitialized: true, cookie: { secure: false } })); // Passport config require('./config/passport')(passport); //Passport Middleware app.use(passport.initialize()); app.use(passport.session()); 在解析器中填充国家/地区选择。