首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式运行ipyvuetify按钮

以编程方式运行ipyvuetify按钮
EN

Stack Overflow用户
提问于 2020-11-29 03:02:00
回答 2查看 294关注 0票数 1

假设我有一个代码,其中一个按钮编码为ipyvuetify

代码语言:javascript
复制
v_btn_load  = vue.Btn(class_='mx-2 light-red darken-1', 
                           children=[vue.Icon(left=True, children=['get_app']),'Load data'])

def on_click_load(widget, event, data):
    #pseudo code: load file
    print("button run")
                
v_btn_load.on_event('click', on_click_load)

如何以编程方式运行(单击) v_btn_load按钮?

代码语言:javascript
复制
v_btn_load.click() does not work

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-30 18:53:25

"on_click_load“仍然是一个本地python函数,因此您可以在脚本中简单地访问它。只需使用虚拟对象填充不需要的变量(可能是小部件和事件),并根据需要填充数据变量。

如果你需要一些来自客户端的输入,那就更困难了。我不知道远程控制客户端的方法。到目前为止,我唯一能做的就是用一个私有类扩展VuetifyTemplate,并指定一些在“挂载”时运行的JS代码。这将运行显示的代码,但与触发单击操作不同:

下面是一个简单的示例,它直接将变量的内容复制到本地剪贴板,而不带任何显示元素:

代码语言:javascript
复制
import ipyvuetify as v
from traitlets import Unicode, observe


class toClipboard(v.VuetifyTemplate):
    """Copies a given string directly to the users clipboard.

       Parameters:
           clipboardValue - The value to offer for copying to the clipboard

       Example:
           tunnel = toClipboard(clipboardValue='VALUE_TO_COPY')       

           Upon change of the variable 'clipboardValue', it's content will be automatically pushed to the clipboard
       """

    clipboardValue = Unicode('').tag(sync=True)

    template = Unicode('''
        <script>
          export default {
            mounted () {
              var tmpElement = $('<textarea>').val(this.clipboardValue).appendTo('body').select();
              document.execCommand('copy');
              $(tmpElement).remove();
            },
          }
        </script>''').tag(sync=True)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        
        self.observe(self.pushToClipboard, names=('clipboardValue'))
        
        display(self)


    def pushToClipboard(self, change):
        display(self)

作为额外的好处,本例使用traitlets的observe函数在变量的值发生更改时立即重新显示JS。这是一种创建类似行为的廉价解决方案。

我不是在真正的GUI中使用上面的例子,而是在Jupyther Notebook中以一种懒惰的方式自动将计算结果复制到我的本地剪贴板。

票数 4
EN

Stack Overflow用户

发布于 2020-12-09 00:20:48

查看v.Btn类的描述,我发现了以下内容:

代码语言:javascript
复制
 |  ----------------------------------------------------------------------
 |  Methods inherited from ipyvue.VueWidget.Events:
 |  
 |  fire_event(self, event, data)
 |  
 |  on_event(self, event_and_modifiers, callback, remove=False)

然后我假设

代码语言:javascript
复制
v_btn_load.fire_event('click', None)

应该做到这一点

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65053418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档