在IPython笔记本中订购小部件

时间:2014-08-08 17:52:03

标签: python-2.7 widget ipython-notebook

我正在玩IPython(IPython.html.widgets)的模块小部件,创建一些小部件。

我正在做的是创建一堆小部件,比如4个整数滑块:

w1 = widgets.IntSliderWidget(description='w1')
w2 = widgets.IntSliderWidget(description='w2')
w3 = widgets.IntSliderWidget(description='w3')
w4 = widgets.IntSliderWidget(description='w4')

我想在函数interact()上使用函数a_function()来玩小部件。但我希望有一个代码,我没有明确列出我的函数参数中的所有小部件(通用的东西)。类似的东西:

def a_function(**kwargs):
    print kwargs
    # do other things...

kwargs = {}
kwargs['w1'] = w1
kwargs['w2'] = w2
kwargs['w3'] = w3
kwargs['w4'] = w4

# calling the function interact() to interact with the function a_function()
interact(a_function, **kwargs)

我的问题是Python中的字典是未排序的,但我想管理小部件在笔记本中出现的顺序。我想确保小工具w1出现在w2之前,w2之前w3,等等......

有任何解决此问题的建议吗?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

您可以尝试对键进行排序:

def a_function(**kwargs):
    for k in sorted(kwargs.keys()):
        print k, kwargs[k]
    # do other things...

答案 1 :(得分:0)

您是否尝试过使用collections.OrderedDict()而不是dict()?它会记住键的插入顺序。