使用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))
其中包含一个明显的错误!但是,当我运行单元格并选择一个文件时,看不到任何错误输出。
该如何解决?