从Jupyter笔记本调用函数未读取字符串

2024-05-29 07:46:50 发布

您现在位置:Python中文网/ 问答频道 /正文

这看起来很简单。我有一个Jupyter笔记本,下面的代码允许一个文件对话框,这样用户可以选择一个文件进行分析。有几个不同的文件使用,这是很重要的用户选择适当的文件在适当的顺序。我正在尝试向窗口标题添加信息,以便用户知道脚本正在查找哪个文件。在

这是笔记本代码:

import PCB_utility
f_name = PCB_utility.get_file('Select Bitwise data file')
df_bitwise = pd.read_excel(f_name, sheetname = 'lvtemporary_653630', header=(0))
f_name = PCB_utility.get_file('Select ARINC 429 data file')
df_ARINC = pd.read_csv(f_name, sep = '\t', header=(0))

文件对话框正常工作。用户选择文件,程序只做它需要的。我想让它更友好一点。 PCB_实用程序如下所示:

^{pr2}$

问题是指令没有进入对话框。我手动将这个函数输入到IPython部分,它运行得很好。当我从笔记本上调用它时,它不会添加额外的文本。它只有标准的“打开文件”。在


Tags: 文件代码用户namedfreaddataget
2条回答

OP已经找到了解决方案,但是对于其他正在寻找相同解决方案的人来说,您可以使用IPython magic命令来启用IPython GUI事件循环集成,使工作的外部GUI从IPython(即Jupyter笔记本)调用:

# Magic (we must tell IPython that we will be running an external Qt GUI)
%gui qt5

from PyQt5.QtWidgets import QFileDialog

def select_file(directory='./'):
    fname = QFileDialog.getOpenFileName(None,
                                        'Select file...', 
                                        directory,
                                        filter='All files (*)')
    return fname[0]

因为最初的问题是针对PyQt4的,上面的命令%gui qt5应该替换为%gui qt4,或者只替换{}。在

在没有魔法命令的情况下做同样的事情(类似于OP的解决方案):

^{pr2}$

以下是最终成功的代码:

import sys
from PyQt4.QtGui import *


def get_file(Instructions):

# Create an PyQT4 application object.
    app = QApplication(sys.argv) 

# The QWidget widget is the base class of all user interface objects in PyQt4.
    wid = QWidget()

# Get filename using QFileDialog
    filename = QFileDialog.getOpenFileName(wid, Instructions, '/')
    return(filename)

    sys.exit(app.exec_()) 

我需要添加PyQt4应用程序和小部件,然后关闭它。我不得不承认,我不太明白为什么,但它是有效的。在

相关问题 更多 >

    热门问题