链接 ipython 小部件按钮和滑块值

2024-03-17

我试图弄清楚如何将按钮小部件控制的计数器的值链接到滑块小部件的值。

这里的目标是使用 ipython 小部件创建一个简单的“类似 vcr”的界面,其中包含三个小部件:IntSlider和两个Button递增计数器和递减计数器。这就是我所拥有的:

import ipywidgets as widgets
from functools import partial
from IPython.display import display
import traitlets

class Counter:
   def __init__(self, initial=0):
      self.value = initial

   def increment(self, amount=1):
      self.value += amount
      return self.value

def button_plus(counter, w):
    counter.increment(+1)  

def button_minus(counter, w):
    counter.increment(-1) 

counter = Counter()
# 1 step forward button
wplus = widgets.Button(description='>')
wplus.on_click(partial(button_plus, counter))
# 1 step backward button
wminus = widgets.Button(description='<')
wminus.on_click(partial(button_minus, counter))
# integer slider
wpick = widgets.IntSlider(value=0,min=0,max=10,step=1,description="time step")

display(wminus, wpick, wplus)

print(counter.value)
print(wpick.value)

and here's a screen grab where I've moved the IntSlider to 1 and clicked twice on the increment button: enter image description here

我显然希望有一个整数值由所有 3 个小部件控制并与所有 3 个小部件同步。

我读到小部件链接 https://github.com/ipython/ipywidgets/blob/master/examples/Widget%20Events.ipynb但我不知道如何执行此操作,因为我的按钮小部件没有值 - 计数器对象具有我想要链接的值。

这不起作用:

l = traitlets.link((counter, 'value'), (wpick, 'value'))

because counter is not HasTraits.

我怎样才能得到counter.value被链接到wpick.value这样单击其中一个按钮就会调整滑块上的 int ?


下列的this https://github.com/ipython/ipywidgets/blob/master/examples/Custom%20Widget%20-%20Hello%20World.ipynb指导,你需要Counter类继承自DOMWidget像这样的类:

from traitlets import CInt, link
class Counter(widgets.DOMWidget):
    value = CInt(0, sync=True)

然后您可以定义您的counter小部件和按钮回调方法:

counter = Counter()
def button_plus(name):
    counter.value += 1 if counter.value < 10 else 0
def button_minus(name):
    counter.value -= 1 if counter.value > 0 else 0

链接slider and counter小部件:

link((wpick, 'value'), (counter, 'value'))

并在按钮上注册事件:

wplus.on_click(button_plus)
wminus.on_click(button_minus)

单击按钮现在将增加/减少计数器的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

链接 ipython 小部件按钮和滑块值 的相关文章

随机推荐

  • 如何在linux下用c写一个http1.0代理服务器?

    我必须开发仅在 Linux 和 c 中使用 HTTP 1 0 的代理服务器 我需要一些提示才能开始开发 我假设您对使用 linux 和 c 语言有信心 没有任何提示 否则不要从开发代理开始 阅读并理解RFC 1945 HTTP 1 0 ht
  • 从低均值泊松分布中绘制数字的性能

    为了在C 中从泊松分布中抽取随机数 通常建议使用 RNG type rng std poisson distribution
  • 如何在 Visual Studio 中传递多个命令参数?

    我正在使用 LZMA SDK 开发一个压缩 解压缩项目 主程序包含一些我必须用来运行应用程序的参数 要从命令行运行它 我使用 LzmaUtil exe e input elf output elf 我正在使用 VS 2013 所以我添加了e
  • org.xml.sax.SAXParseException:src-resolve:无法将名称“repository:auditing-attributes”解析为(n)“属性组”组件

    在项目上运行 Maven 测试时出现以下错误 我正在使用 Spring Data Neo4j 构建一个测试应用程序 java lang IllegalStateException Failed to load ApplicationCont
  • 将双精度数转换为没有小数位的字符串的最佳方法

    将双精度数转换为没有小数位的字符串的最佳方法是什么 关于什么String valueOf int documentNumber 双精度数小数点后始终为 0 我不需要舍入或截断 如果您确定 double 确实是一个整数 请使用这个 Numbe
  • Delphi - 反向查找“谁包括这个单元”

    我正在调试分布在许多单元上的大型应用程序 我在低级单元中遇到了编译错误 并且完全不知道该单元在应用程序的哪个部分被引用 有没有办法使用 RAD studio 2010 的 IDE 创建某种包含图 由于大多数使用的单元不是项目的一部分 并且分
  • React 表单,提交对象,然后将其推送到数组

    我是 React 新手 不确定如何执行此操作 我有一组已映射并在视图中渲染的对象 我想要做的是设置一个表单 将每个字段的值提交到新对象的相应属性 但我不确定如何执行此操作 这是我的初始数据 它在视图中呈现 contactArray name
  • C# Outlook 2007 COM 互操作应用程序不退出!

    知道为什么以下代码不退出通过 COM 互操作创建的 Outlook 2007 进程吗 Microsoft Office Interop Outlook Application app new Microsoft Office Interop
  • 为什么这个 readline 异步迭代器无法正常工作?

    这是一个更大流程的一部分 我在节点 v14 4 0 中将其提炼为最小的 可重现的示例 在此代码中 它从内部不输出任何内容for loop 我在控制台中只看到这个输出 before for loop finished finally done
  • 如何使用 pgx 记录查询?

    如果我使用 pgx 池 我找不到如何记录 sql 查询的文档 例如我创建了这样的池 func DB pgxpool Pool connStr os Getenv DATABASE URL conn err pgxpool Connect c
  • 迁移到Git时如何处理部分svn:externals?

    我想将 SVN 存储库导入 GitHub Enterprise 存储库 与此相关的问题有很多 其中大多数都可以通过 Git 子模块或 Git 子树来解决 就我而言 我有两个存储库 主项目存储库 模块存储库 超过 2 GB 的大型 SVN 存
  • 如果找不到 emacs 初始化文件怎么办?

    我正在尝试按照以下说明将 haskell 模式添加到 emacs http doc gnu darwin org haskell mode installation guide html http doc gnu darwin org ha
  • ASP.NET Core 2,jQuery POST 数据为空

    I use jQuery并发送数据POST方法 但在服务器方法中 值没有出现 可能是什么错误 client ajax type POST contentType application json charset utf 8 url AddT
  • 接受套接字函数超时

    我试图在接受套接字函数上设置超时 但没有成功 我希望接受功能块直到超时延迟结束 是否可以不将接受函数设置为非阻塞 我尝试了很多可能性都没有成功 感谢您的回答 下面是我的代码 struct timeval tv fd set readfds
  • 从 SwiftUI 中的切换列表中读取值

    我希望这个问题不要太愚蠢 我被这个问题困扰了很长时间 尝试了不同的方法 但仍然失败 我对 Swift 和 SwiftUI 还很陌生 这就是为什么我可能看不到明显的东西 我有一个包含切换列表的视图 切换列表依赖于setData它是由包含 id
  • 如何将 Express.js 变量传递给 MongoDB 函数?

    我正在研究一个博客应用程序 https github com Ajax30 XPressBlog 点击链接即可查看GitHub回购 与Express https expressjs com EJS https ejs co 和 MongoD
  • 为什么使用不匹配的参数调用重载函数仍然有效

    我无法解释为什么第二个电话 B 不会给出任何错误 因为有两个char元素 并且此调用没有确定的匹配 为什么叫第二个 2 但不是第一个 1 版本 我注意到有一些自动转换 我不明白的是为什么 a 被提升为 int 并且 c isn t 1 in
  • 如果使用了 waitFor,为什么杀死 JVM 也会终止其子进程?

    If waitFor不使用时 杀死JVM对其子进程没有影响 这是一个例子 重击脚本 usr bin env bash echo Sleeping gt log sleep 30 echo Wake up gt gt log Java代码 p
  • Java Applet 在 Safari 中沙箱化?

    自从升级到 Mavericks 后 如果从 Safari 使用 我们工作中的 Applet 就不再能够浏览文件 但在 Firefox 上仍然可以使用 Applet 处理文件上传 因此您可以想象这可能是一个问题 从 Safari 使用它时 我
  • 链接 ipython 小部件按钮和滑块值

    我试图弄清楚如何将按钮小部件控制的计数器的值链接到滑块小部件的值 这里的目标是使用 ipython 小部件创建一个简单的 类似 vcr 的界面 其中包含三个小部件 IntSlider和两个Button递增计数器和递减计数器 这就是我所拥有的