मैं ipywidgets का उपयोग करके एक इंटरैक्टिव डैशबोर्ड बनाने का प्रयास करता हूं। (ipywidgets संस्करण 7.5.0, अजगर संस्करण 3.7.2)

कोड के एक बैच में, widgets.VBox() अपने आप दिखाई देता है। लेकिन एक बार जब मैं किसी फ़ंक्शन के लिए कथन को आउटसोर्स करता हूं, तो widgets.VBox() तब तक प्रदर्शित नहीं होता जब तक कि मैं इसे display() कथन में स्पष्ट रूप से लपेटता नहीं हूं। यहां कोड का एक साधारण टुकड़ा है जो काम करता है। यह शीर्ष पर स्लाइडर और नीचे 5 बार चुनी गई संख्या को दिखाता है।

import ipywidgets as widgets
from IPython.display import display

def fa(a,b):
    display(a*b)

a = widgets.IntSlider(10)
out = widgets.interactive_output(fa,{'a':a,'b':widgets.fixed(5)})
widgets.VBox([a,out])

एक बार जब मैं वीबॉक्स को आउटपुट फ़ंक्शन में डालता हूं, तो कुछ भी प्रदर्शित नहीं होता है, यहां तक ​​​​कि एक त्रुटि संदेश भी नहीं:

def fa(a,b):
    display(a*b)

def db(a,b):
   widgets.VBox([a,b])

a = widgets.IntSlider(10)
out = widgets.interactive_output(fa,{'a':a,'b':widgets.fixed(5)})
db(a,out)

लेकिन एक बार जब मैं db() फ़ंक्शन में widgets.VBox([a,b]) को display(widgets.VBox([a,b])) से बदल देता हूं तो सब कुछ सामान्य हो जाता है।

क्षमा करें, यह एक बुनियादी प्रश्न हो सकता है, लेकिन इस व्यवहार के पीछे की व्यवस्था क्या है?

0
nostalghia 30 अगस्त 2019, 12:16

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप नोटबुक में काम कर रहे हैं, तो डिफ़ॉल्ट व्यवहार किसी भी सेल की अंतिम पंक्ति को नीचे आउटपुट स्थान पर प्रिंट/प्रदर्शित करना है। इसलिए आपके पहले स्निपेट की अंतिम पंक्ति पर आपका widgets.VBox([a,out]) वास्तव में display(widgets.VBox([a,out])) भेष में है।

0
ac24 30 अगस्त 2019, 13:39