我似乎无法弄清楚在Parameterized类中使用FileInput小部件对某人触发函数的语法。
我知道FileInput本身不是参数,但是我查看了它的代码,并且value属性是一个通用的param.Parameter,所以我认为这可以工作。我还尝试仅根据文件(MyService
)。
<PackageReference Include="AWSSDK.SecretsManager" Version="3.3.101.17" />
然后,在使用文件小部件之后,我希望@param.depends('file')
具有与class MyFile(param.Parameterized):
file = pn.widgets.FileInput() # should be a param.?
file_data = None
@param.depends('file.value')
def process_file(self):
print('processing file')
self.file_data = self.file.value
my_file = MyFile()
相同的内容。
感谢任何输入,或者任何人都可以指出我需要的文档。谢谢!
答案 0 :(得分:1)
您是对的,在这种情况下,您的“文件”变量必须是参数,而不是面板小部件。
此处有用于设置可用参数的所有可能选项:
https://param.pyviz.org/Reference_Manual/param.html
因此,在您的情况下,我使用了 param.FileSelector():
import param
import panel as pn
pn.extension()
class MyFile(param.Parameterized):
file = param.FileSelector() # changed this into a param
file_data = None
@param.depends('file', watch=True) # removed .value and added watch=True
def process_file(self):
print('processing file')
self.file_data = self.file # removed .value since this is a param so it's not needed
my_file = MyFile()
但是,此FileSelector是一个用于自己键入文件名的框。这个问题与此相关,并给出了更多的解释:
Get a different (non default) widget when using param in parameterized class (holoviz param panel)
因此,您需要通过覆盖如下内容来将FileSelector仍更改为FileInput小部件: / p>
pn.Param(
my_file.param['file'],
widgets={'file': pn.widgets.FileInput}
)
请注意,我还添加了 watch = True 。当您的“文件”参数发生更改时,这可以确保所做的更改。以下问题对此有更多解释:
How do i automatically update a dropdown selection widget when another selection widget is changed? (Python panel pyviz)
您能告诉我是否有帮助吗?