如何用Python实现在Azure Jupyter笔记本中打开的文件对话框?

如何用Python实现在Azure Jupyter笔记本中打开的文件对话框?,python,azure,jupyter-notebook,jupyter-kernel,azure-notebooks,Python,Azure,Jupyter Notebook,Jupyter Kernel,Azure Notebooks,我的代码: %gui qt from PyQt5.QtWidgets import QFileDialog def gui_fname(dir=None): """Select a file via a dialog and return the file name.""" if dir is None: dir ='./' fname = QFileDialog.getOpenFileName(None, "Select data file...",

我的代码:

%gui qt

from PyQt5.QtWidgets import QFileDialog

def gui_fname(dir=None):
    """Select a file via a dialog and return the file name."""
    if dir is None: dir ='./'
    fname = QFileDialog.getOpenFileName(None, "Select data file...", 
                dir, filter="All files (*);; SM Files (*.sm)")
    return fname[0]

from IPython.display import display
button = widgets.Button(description="Open The File  !!")
button.style.button_color = 'yellow'
display(button)


def on_button_clicked(b):
    print("Button clicked.")
    f=gui_fname()
    #import fileplot
    #fileplot.load_file(f)



button.on_click(on_button_clicked)
#b1 = Button(description='Open File !!')
#b1.style.button_color = 'yellow'
#b1.on_click(on_button_clicked)
#b1
问题: 它在本地pc上运行良好 python版本2.7 操作系统Linux

但是,当我试图在Azure Jupyter笔记本中远程实现它时,每次我运行代码时,它的内核都会死掉,我无法得到结果。 有没有其他方法可以在ipython widgets中使用html5小部件实现文件对话框

我需要什么 我需要用户选择他/她的电脑中本地可保存的文件。1


实际上,您不能在Azure Jupyter笔记本上使用任何本机GUI API,因为Azure Jupyter笔记本在远程Linux服务器上运行,没有任何GUI支持,而且它是用于远程访问的web应用程序

所以,如果您想为客户端用户显示一个文件对话框,HTML文件对话框是您唯一的选择。简单的解决方案是使用
IPython
模块的
display
HTML
类来显示
选择文件
按钮,请参见下面的代码和结果

from IPython.display import display, HTML

display(HTML("""
    <input type="file" name="myfile">
"""))
从IPython.display导入显示,HTML
显示(HTML(“”)
"""))
结果是:


对于更复杂的情况,您可以参考这些博客并创建自己的博客。然而,目前还没有一个服务来接收和保存上传文件,需要自己实现。或者,您可以简单地为IPython使用名为
fileupload
(,)的现有项目,该项目是“一个IPython笔记本小部件,用于上载文件,使用。”

实际上,您不能在Azure Jupyter笔记本上使用任何本机GUI API,由于Azure Jupyter笔记本在远程Linux服务器上运行,没有任何GUI支持,因此它是一个用于远程访问的web应用程序

所以,如果您想为客户端用户显示一个文件对话框,HTML文件对话框是您唯一的选择。简单的解决方案是使用
IPython
模块的
display
HTML
类来显示
选择文件
按钮,请参见下面的代码和结果

from IPython.display import display, HTML

display(HTML("""
    <input type="file" name="myfile">
"""))
从IPython.display导入显示,HTML
显示(HTML(“”)
"""))
结果是:


对于更复杂的情况,您可以参考这些博客并创建自己的博客。然而,目前还没有一个服务来接收和保存上传文件,需要自己实现。或者,您可以简单地为IPython使用一个名为
fileupload
(,)的现有项目,该项目是“一个IPython笔记本小部件,用于上载文件,使用。”

我使用了html,但我只获取所选的文件名,我希望文件路径在其中不可用。你知道如何获取文件路径吗?我的问题是我想选择一个文件,然后我将如何读取它,因为我只获取文件名。在选择文件后,我的问题是如何通过pandas读取python中的文件??它需要文件路径,但它只给了我文件名。我使用了html,但我只得到了选定的文件名,我想要的文件路径在其中不可用。你知道如何获取文件路径吗?我的问题是我想选择一个文件,然后我将如何读取它,因为我只获取文件名。在选择文件后,我的问题是如何通过pandas读取python中的文件??它需要文件路径,但它只给了我文件名。