如何在 Python 中实现在 Azure Jupyter Notebook 中打开的文件对话框?
How can I implement a File Dialog box that opens in Azure Jupyter Notebook In Python?
我的代码:
%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
问题:
它在本地电脑上运行良好
python 版本 2.7
osLinux
但是当我尝试在 Azure Jupyter Notebook 中远程实现它时,每次我 运行 代码时内核都会死掉,而且我无法获得结果。
有没有其他方法可以让我在 ipython 小部件中实现带有 html5 小部件的文件对话框??
我需要什么
我需要用户 Choose His/Her pc 中本地可用的文件。1
实际上,您不能在 Azure Jupyter Notebook 上使用任何本机 GUI API,因为 Azure Jupyter Notebook 在没有任何 GUI 支持的远程 Linux 服务器上运行,并且它是远程的 Web 应用程序正在访问。
因此,如果您想为客户端用户显示文件对话框,HTML文件对话框是您唯一的选择。简单的解决方案是使用IPython
模块的display
& HTML
class显示一个Choose File
按钮,请看下面的代码和结果。
from IPython.display import display, HTML
display(HTML("""
<input type="file" name="myfile">
"""))
结果是:
更复杂的案例可以参考这些博客IPython Notebook: Javascript/Python Bi-directional Communication
and Reading files in JavaScript using the File APIs
to create your own one. However, there is lack a service to receive & save the upload file which need implement by yourself. Or you can simply use an existing project named fileupload
(PyPI, GitHub) for IPython which is "An IPython notebook widget to upload files, using FileReader。
我的代码:
%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
问题: 它在本地电脑上运行良好 python 版本 2.7 osLinux
但是当我尝试在 Azure Jupyter Notebook 中远程实现它时,每次我 运行 代码时内核都会死掉,而且我无法获得结果。 有没有其他方法可以让我在 ipython 小部件中实现带有 html5 小部件的文件对话框??
我需要什么 我需要用户 Choose His/Her pc 中本地可用的文件。1
实际上,您不能在 Azure Jupyter Notebook 上使用任何本机 GUI API,因为 Azure Jupyter Notebook 在没有任何 GUI 支持的远程 Linux 服务器上运行,并且它是远程的 Web 应用程序正在访问。
因此,如果您想为客户端用户显示文件对话框,HTML文件对话框是您唯一的选择。简单的解决方案是使用IPython
模块的display
& HTML
class显示一个Choose File
按钮,请看下面的代码和结果。
from IPython.display import display, HTML
display(HTML("""
<input type="file" name="myfile">
"""))
结果是:
更复杂的案例可以参考这些博客IPython Notebook: Javascript/Python Bi-directional Communication
and Reading files in JavaScript using the File APIs
to create your own one. However, there is lack a service to receive & save the upload file which need implement by yourself. Or you can simply use an existing project named fileupload
(PyPI, GitHub) for IPython which is "An IPython notebook widget to upload files, using FileReader。