如何创建一个jupyterhub小部件作为对象?

时间:2019-11-12 15:54:12

标签: python jupyter-notebook jupyter-lab

使用jupyterlab 1.1.4,我想创建一个对象,该对象显示小部件,并简化小部件和回调函数的定义。在第一个单元格中,我创建并启动实例:

from ipywidgets import FileUpload
from ipywidgets import widgets
from IPython.display import display

class MyWidget():
    def __init__(self):
        self.output = widgets.Output()
        self.upload = FileUpload(description='Choose file')
        self.upload_filename = None
        self.upload.observe(self.upload_file, names=['value'])
        display(self.upload, self.output)

    @output.capture()
    def upload_file(self, args):
        self.upload_filename = list(args['new'].keys())[0]
        print("File selected: {}".format(self.upload_filename))

w = MyWidget() 

运行此单元格时,它显示一个FileUpload按钮,当我单击它时,可以选择一个文件。但是,当我这样做时,我希望看到一些输出(在打印所选文件名时)。但是没有输出。

我在做什么错?如何正确做?

我什至可以更进一步地更改upload_file方法,如下所示:

    @output.capture()
    def upload_file(self, args):
        a=1/0
        self.upload_filename = list(args['new'].keys())[0]
        print("File selected: {}".format(self.upload_filename))

其中包含一个明显的错误!但是,当我运行单元格并选择一个文件时,看不到任何错误输出。

该如何解决?

0 个答案:

没有答案