python Jupyter笔记本下载按钮

5vf7fwbs  于 2023-02-15  发布在  Python
关注(0)|答案(1)|浏览(226)

我尝试在jupyter笔记本(IPython)中实现一个下载按钮。我知道这个按钮部件确实存在于jupyter中,如下所示。

from ipywidgets import Button

...

btn_download = widgets.Button(
    description='Download',
    button_style='', # 'success', 'info', 'warning', 'danger' or ''
    tooltip='Download',
    icon='download',
    layout=button_layout )

# Then implement download in on_click 
def on_button_download_clicked(b):
    # Handle download using urlopen
    filedata = urllib.request.urlopen(r'file://' + filepath)
    datatowrite = filedata.read()
    with open("download.fid", 'wb') as f:  
        f.write(datatowrite)

# Register callback
btn_download.on_click(on_button_download_clicked)

然而,这似乎不起作用。我试过一些其他的方法,如使用urlretrieve,仍然不起作用。
我也意识到存在使用ipython.display.FileLink这样的解决方案,但我希望它是按钮形式。
有什么变通办法吗?

cnwbcb6i

cnwbcb6i1#

Solara有一个FileDownload component可以用于此目的。

import solara

filepath = "/Users/maartenbreddels/beach.jpeg"
data = open(filepath, "rb").read()
solara.FileDownload(data=data, label="Download image", filename="image.jpeg")

这看起来像:

如果你需要把它嵌入到一个ipywidget VBox或HBox中,使用.widget方法:

import ipywidgets as widgets
widgets.VBox([
    solara.FileDownload.widget(data=data, label="Download image", filename="image.jpeg")
])

相关问题