我们从Python开源项目中,提取了以下33个代码示例,用于说明如何使用ipywidgets.HTML。
def __init__(self, training_length=None, update_interval=100, bar_length=50): self._training_length = training_length if training_length is not None: self._init_status_template() self._update_interval = update_interval self._recent_timing = [] self._total_bar = FloatProgress(description='total', min=0, max=1, value=0, bar_style='info') self._total_html = HTML() self._epoch_bar = FloatProgress(description='this epoch', min=0, max=1, value=0, bar_style='info') self._epoch_html = HTML() self._status_html = HTML() self._widget = VBox([HBox([self._total_bar, self._total_html]), HBox([self._epoch_bar, self._epoch_html]), self._status_html])
def make_header(self): img = io.open(os.path.join(mdt.PACKAGEPATH, '_static_data/img/banner.png'), 'r+b').read() encoded = base64.b64encode(img).decode('ascii') img = '<img style="max-width:100%" src=data:image/png;base64,'+('%s>'%encoded) links = [self._makelink(*args) for args in (("http://moldesign.bionano.autodesk.com/", 'About'), ("https://github.com/autodesk/molecular-design-toolkit/issues", 'Issues'), ("http://bionano.autodesk.com/MolecularDesignToolkit/explore.html", "Tutorials"), ('http://autodesk.github.io/molecular-design-toolkit/', 'Documentation'), ('https://lifesciences.autodesk.com/', 'Adsk LifeSci') )] linkbar = ' '.join(links) return ipy.HTML(("<span style='float:left;font-size:0.8em;font-weight:bold'>Version: " "{version}</span>" "<span style='float:right'>{linkbar}</span>" "<p>{img}</p>").format(img=img, linkbar=linkbar, version=mdt.__version__))
def __init__(self, pyname, getversion=False): self.displays = {} self.pyname = pyname self.getversion = getversion self.nbv_display = VBox() self.widgets_display = VBox() self.warning = ipywidgets.HTML() super().__init__() children = [ipywidgets.HTML("<h4><center>%s</center></h4>" % self.pyname, layout=ipywidgets.Layout(align_self='center')), ipywidgets.HTML(self.HEADER)] for location in install.nbextension_ordered_paths(): self.state = install.get_installed_versions(self.pyname, self.getversion) props = self._get_props(location) self.displays[location] = ExtensionInstallLocation(self, props) children.append(self.displays[location]) children.append(self.warning) self.children = children self._highlight_active()
def __init__(self, parent, props): super().__init__(layout=ipywidgets.Layout(align_items='flex-end')) self.parent = parent self.props = props self.install_button = ipywidgets.Button() self.install_button.add_class('nbv-table-row') self.remove_button = ipywidgets.Button(description='remove') self.remove_button.add_class('nbv-table-row') self.html = ipywidgets.HTML() if self.props['writable'] == 'INSTALLED': self.chidlren = (self.html,) else: self.children = (self.html, self.install_button, self.remove_button) self.install_button.on_click(self.install) self.remove_button.on_click(self.uninstall) self.rerender()
def __init__(self, image, client): self._err = False self._client = client self.image = image self.status = ipy.HTML(layout=ipy.Layout(width="20px")) self.html = ipy.HTML(value=image, layout=ipy.Layout(width="400px")) self.html.add_class('nbv-monospace') self.msg = ipy.HTML(layout=ipy.Layout(width='300px')) self.button = ipy.Button(layout=ipy.Layout(width='100px')) if mdt.compute.config.devmode: self.button.on_click(self.rebuild) else: self.button.on_click(self.pull) self._reactivate_button() self._set_status_value() super().__init__(children=[self.status, self.html, self.button, self.msg])
def __init__(self, value=None, units=None, **kwargs): kwargs.setdefault('display', 'flex') kwargs.setdefault('flex_flow','row wrap') super().__init__(layout=ipy.Layout(display='flex', flex_flow='row wrap'), **process_widget_kwargs(kwargs)) self.textbox = ipy.Text() self.textbox.observe(self._validate, 'value') self._error_msg = None if units is not None: self.dimensionality = u.get_units(units).dimensionality else: self.dimensionality = None self._validated_value = None self.validated = ipy.HTML(self.INVALID) self.children = [self.textbox, self.validated] self._is_valid = False if value is not None: self.value = value
def _set_tool_state(self, *args): """ Observes the `viewer.selected_atom_indices` list and updates the tool panel accordingly Returns: Tuple(ipywidgets.BaseWidget): children of the tool panel """ atoms = self.viewer.selected_atoms with self.viewer.hold_trait_notifications(): for shape in self._widgetshapes.values(): if shape == '_axes': self.viewer.draw_axes(False) else: self.viewer.remove(shape) self._widgetshapes = {} if len(atoms) == 1: self._setup_atom_tools(atoms) elif len(atoms) == 2: self._setup_distance_tools(atoms) elif len(atoms) == 3: self._setup_angle_tools(atoms) elif len(atoms) == 4: self._setup_dihedral_tools(atoms) else: self.tool_holder.children = (ipy.HTML('Please click on 1-4 atoms'),)
def update(self, *args): jobstat = self._job.status status_display = StatusView(self._job) if self._job.inputs: input_browser = FileBrowser(self._job.inputs, margin=5, font_size=9) else: input_browser = ipy.HTML('No input files') file_browser = ipy.Tab([input_browser]) file_browser.set_title(0, 'Input files') if jobstat == status.FINISHED: output_files = self._job.get_output() if self._job.stdout: output_files['Standard output'] = self._job.stdout if self._job.stderr: output_files['Standard error'] = self._job.stderr output_browser = FileBrowser(output_files, margin=5, font_size=9) file_browser.children = [input_browser, output_browser] file_browser.set_title(1, 'Output files') self.children = [status_display, file_browser] else: update_button = ipy.Button(description='Update') update_button.on_click(self.update) self.children = [status_display, update_button, file_browser]
def _update(self, box): def on_click(b): if b.description == 'up one level': self.path = os.path.split(self.path)[0] else: self.path = self.path + "/" + b.description self._update_files() self._update(box) buttons = [] # if self.files: button = widgets.Button(description='up one level', background_color='#aaaaaa') button.on_click(on_click) buttons.append(button) for f in self.dirs: button = widgets.Button(description=f, background_color='#d0d0ff') button.on_click(on_click) buttons.append(button) for f in self.files: button = widgets.Button(description=f) button.on_click(on_click) buttons.append(button) box.children = tuple([widgets.HTML("You have selected: <h3>%s</h3>" % (self.path,))] + buttons)
def _update(self, box): def on_click(b): if b.description == '..': self.path = os.path.split(self.path)[0] else: self.path = os.path.join(self.path, b.description) self._update_files() self._update(box) buttons = [] for f in self.dirs: button = widgets.Button(description=f, background_color='#d0d0ff', layout=widgets.Layout(width='50%')) button.on_click(on_click) buttons.append(button) for f in self.files: button = widgets.Button(description=f, layout=widgets.Layout(width='50%')) button.style.button_color = 'powderblue' button.on_click(on_click) buttons.append(button) box.children = tuple([widgets.HTML("%s" % (self.path,))] + buttons) # example usage: # f = FileBrowser() # f.widget() # <interact with widget, select a path> # in a separate cell: # f.path # returns the selected path
def __init__(self, entries, log_report='LogReport'): self._entries = entries self._log_report = log_report self._default_row = dict((e, None) for e in entries) self._widget = HTML() self.count = 0 self.update([])
def calc_G_options(self): '''Widgets for method for computing soil heat flux''' self.w_G_form = widgets.ToggleButtons( description='Select method for soil heat flux', options={ 'Ratio of soil net radiation': 1, 'Constant or measured value': 0, 'Time dependent (Santanelo & Friedl)': 2}, value=self.G_form, width=300) self.w_Gratio = widgets.BoundedFloatText( value=self.Gratio, min=0, max=1, description='G ratio (G/Rn)', width=80) self.w_Gconstant = widgets.FloatText( value=self.Gconstant, description='Value (W m-2)', width=80) self.w_Gconstant.visible = False self.w_Gconstanttext = widgets.HTML( value="Set G value (W m-2), ignored if G is present in the input file") self.w_Gconstanttext.visible = False self.w_Gconstant.visible = False self.w_G_amp = widgets.BoundedFloatText( value=self.G_amp, min=0, max=1, description='Amplitude (G/Rn)', width=80) self.w_G_amp.visible = False self.w_G_phase = widgets.BoundedFloatText( value=self.G_phase, min=-24, max=24, description='Time Phase (h)', width=80) self.w_G_phase.visible = False self.w_G_shape = widgets.BoundedFloatText( value=self.G_shape, min=0, max=24, description='Time shape (h)', width=80) self.w_G_shape.visible = False
def make_controls(self): self.playbutton = ipy.Play(value=0, min=0, max=self.traj.num_frames-1) self.slider = ipy.IntSlider(value_selects='framenum', value=0, description='Frame:', min=0, max=len(self.traj)-1, readout=False) self.readout = ipy.HTML(value='/%d' % (self.traj.num_frames - 1)) self.annotation = ipy.HTML() traitlets.link((self.playbutton, 'value'), (self.slider, 'value')) traitlets.link((self.slider, 'value'), (self, 'current_frame')) return VBox((self.annotation, HBox((self.playbutton, self.slider, self.readout))))
def __init__(self): self.client = None self.warning = ipy.HTML(description='<b>Engine status:</b>', value=SPINNER) self.devmode_label = ipy.Label('Use local docker images (developer mode)', layout=ipy.Layout(width='100%')) self.devmode_button = ipy.Checkbox(value=mdt.compute.config.devmode, layout=ipy.Layout(width='15px')) self.devmode_button.observe(self.set_devmode, 'value') self.engine_config_description = ipy.HTML('Docker host with protocol and port' ' (e.g., <code>http://localhost:2375</code>).' ' If blank, this' ' defaults to the docker engine configured at ' 'your command line.', layout=ipy.Layout(width='100%')) self.engine_config_value = ipy.Text('blank', layout=ipy.Layout(width='100%')) self.engine_config_value.add_class('nbv-monospace') self.image_box = ipy.Box() self._reset_config_button = ipy.Button(description='Reset', tooltip='Reset to applied value') self._apply_changes_button = ipy.Button(description='Apply', tooltip='Apply for this session') self._save_changes_button = ipy.Button(description='Make default', tooltip='Make this the default for new sessions') self._reset_config_button.on_click(self.reset_config) self._apply_changes_button.on_click(self.apply_config) self._save_changes_button.on_click(self.save_config) self.children = [self.warning, VBox([self.engine_config_description, self.engine_config_value]), HBox([self._reset_config_button, self._apply_changes_button, self._save_changes_button]), HBox([self.devmode_button, self.devmode_label]), self.image_box] self.reset_config() super().__init__(children=self.children) self.connect_to_engine()
def __init__(self): from pip._vendor.packaging import version super().__init__() self.version = ipy.HTML('<div class="nbv-loader"></div>') self.textarea = ipy.Textarea(layout=ipy.Layout(width='700px', height='300px')) threading.Thread(target=self.version_check).start() p1 = os.path.join(mdt.PACKAGEPATH, "HISTORY.rst") p2 = os.path.join(mdt.PACKAGEPATH, "..", "HISTORY.rst") if os.path.exists(p1): path = p1 elif os.path.exists(p2): path = p2 else: path = None if path is not None: with open(path, 'r') as infile: self.textarea.value = infile.read() else: self.textarea.value = 'HISTORY.rst not found' self.textarea.disabled = True self.children = (self.version, self.textarea)
def __init__(self): from moldesign.compute import packages self.toggle = ipy.ToggleButtons(options=['Python libs', 'Executables'], value='Python libs') self.toggle.observe(self.switch_pane, 'value') self.pyheader = ipy.HTML( '<span class="nbv-table-header nbv-width-med">Package</span> ' '<span class="nbv-table-header nbv-width-sm">Local version</span> ' '<span class="nbv-table-header nbv-width-sm">Expected version</span>' '<span class="nbv-width-sm"> </span>' # empty space '<span class="nbv-table-header nbv-width-lg">' ' Run calculations...</span>' '<span class="nbv-table-header nbv-width-med"> </span>') self.python_libs = ipy.VBox([self.pyheader] + [PyLibConfig(p) for p in packages.packages]) self.exeheader = ipy.HTML( '<span class="nbv-table-header nbv-width-med">Program</span> ' '<span class="nbv-table-header nbv-width-sm">Local version</span> ' '<span class="nbv-table-header nbv-width-sm">Docker version</span>' '<span class="nbv-width-sm"> </span>' # empty space '<span class="nbv-table-header nbv-width-lg">' ' Run calculations...</span>' '<span class="nbv-table-header nbv-width-med"> </span>') self.executables = ipy.VBox([self.exeheader] + [ExeConfig(p) for p in packages.executables]) self.children = [self.toggle, self.python_libs] super().__init__(children=self.children)
def __init__(self, xface): self.xface = xface if xface.is_installed(): if xface.version_flag: v = xface.get_installed_version() else: v = INSTALLED else: v = MISSING self.maintext = ipy.HTML( ('<span class="nbv-table-row nbv-width-med nbv-monospace">' ' {xface.name}</span> ' '<span class="nbv-table-row nbv-monospace nbv-width-sm">' ' {localversion}</span> ' '<span class="nbv-table-row nbv-monospace nbv-width-sm">' ' {xface.expectedversion}</span>' '<span class="nbv-width-sm nbv-table-row"> </span>' # empty space ) .format(xface=xface, localversion=v)) self.selector = ipy.ToggleButtons(options=['in docker', 'locally'], value='in docker', button_style='info') self.selector.add_class('nbv-width-lg') self.selector.add_class("nbv-table-row") self.selector.observe(self._toggle, 'value') self.path = ipy.HTML(layout=ipy.Layout(width='150px', font_size='x-small'), value=xface.path if xface.path is not None else '',) self.save_button = ipy.Button(description='Make default', layout=ipy.Layout(width='100px')) self.save_button.on_click(self.save_selection) self.save_button.add_class('nbv-table-row') children = [self.maintext, self.selector, self.save_button] super().__init__(children=children, layout=ipy.Layout(width='100%', align_items='flex-end'))
def __init__(self, paramlist, paramdefs, title=None): super(Configurator, self).__init__(layout=ipy.Layout(display='flex', flex_flow='column', align_self='flex-start', align_items='stretch', max_width='100%')) self.paramlist = paramlist self.paramdefs = paramdefs self.apply_button = ipy.Button(description='Apply') self.apply_button.on_click(self.apply_values) self.reset_button = ipy.Button(description='Reset') self.reset_button.on_click(self.reset_values) self.buttons = ipy.Box([self.reset_button, self.apply_button], layout=ipy.Layout(align_self='center')) self.selectors = collections.OrderedDict([(p.name, ParamSelector(p)) for p in paramdefs]) self.reset_values() title = utils.if_not_none(title, 'Configuration') self.title = ipy.HTML('<center><h4>%s</h4></center><hr>' % title, align_self='center') self.currentconfig = ipy.Textarea(description='<i>Current params</i>', disabled=True, value=self._pretty_print_config(), layout=ipy.Layout(width='350px', min_height='300px', max_height='500px', display='flex', flex_flow='column')) self.middle = HBox([VBox(list(self.selectors.values())), self.currentconfig]) self.children = [self.title, self.middle, self.buttons]
def __init__(self, errormessages, molin, molout=None): self.molin = molin self.molout = molout self.msg = errormessages self.status = ipy.HTML('<h4>Forcefield assignment: %s</h4>' % ('Success' if molout else 'FAILED')) self.listdesc = ipy.HTML('<b>Errors / warnings:</b>') error_display = collections.OrderedDict((e.short, e) for e in self.msg) if len(error_display) == 0: error_display['No errors or warnings.'] = StructureOk() self.errorlist = ipy.Select(options=error_display) self.errmsg = ipy.HTML('-') self.viewer = self.molin.draw3d() self.viewer.ribbon(opacity=0.7) if self.errorlist.value is not None: self.switch_display({'old': self.errorlist.value, 'new': self.errorlist.value}) self.errorlist.observe(self.switch_display, 'value') children = (self.status, HBox([self.viewer, VBox([self.listdesc, self.errorlist])]), self.errmsg) super().__init__(children=children, layout=ipy.Layout(display='flex', flex_flow='column'))
def __init__(self, job, **kwargs): kwargs.setdefault('orientation', 'vertical') super(StatusView,self).__init__(**kwargs) self._job = job stat = job.status statstring = self.STATUS_STRING % (job.name, str(job.engine), job.jobid, job.image, job.command, stat) try: statstring += '<br><b>Exit code: </b> %s</br>' % job.exitcode except JobStillRunning: pass text = ipy.HTML(statstring) if stat == status.QUEUED: bar_spec = dict(value=1, bar_style='danger') elif stat == status.RUNNING: bar_spec = dict(value=50, bar_style='info') elif stat == status.FINISHED: bar_spec = dict(value=100, bar_style='success') else: bar_spec = dict(value=100, bar_style='danger') bar = ipy.FloatProgress(**bar_spec) self.children = [text, bar]
def helptip(self,obj): """Return HTML code formatting a tooltip if help is available""" helptext = obj.__doc__ return "" if (not self.p.tooltips or not helptext) else helptext
def my_iplot(figure_or_data, show_link=False, link_text='Export to plot.ly', validate=True, image=None, filename='plot_image', image_width=800, image_height=600) : plot_html, plotdivid, width, height = _plot_html( figure_or_data, show_link, link_text, validate, '100%', 525, global_requirejs=True) #display(HTML(plot_html)) wid = widgets.HTML( value=plot_html, placeholder='Some HTML', description='Some HTML', disabled=False ) return (wid, plotdivid)
def fileSelector(self): """ :return: An ipython widget containing a file selector. If you simply have this method as the last line of a notebook cell, you'll see it. otherwise you need to do IPython.display.display(fileSelector()) """ params = get_default_params() arrayed_analysis_default_filename = params['arrayed_analysis_default_filename'] myFiles = self.getFilelist() myFiles.sort() myFiles = [path.join(path.basename(path.dirname(p)),path.basename(p)) for p in myFiles] fileSelector=ipywidgets.Select(options=myFiles, height=300,width=600) if arrayed_analysis_default_filename in myFiles: fileSelector.value = arrayed_analysis_default_filename else: fileSelector.value=myFiles[0] title=ipywidgets.HTML(value="Pick the file you want to load here") #IPN2: HTMLWidget #IPython.display.display(title) #IPython.display.display(fileSelector) def _fileSelector_updated(widget=None): if(self.filename!=fileSelector.value): self.filename=fileSelector.value arrayed_analysis_default_filename = self.filename params['arrayed_analysis_default_filename'] = arrayed_analysis_default_filename update_default_params(params) try: fileSelector.observe(_fileSelector_updated) except AttributeError: fileSelector.on_trait_change(_fileSelector_updated) _fileSelector_updated() return ipywidgets.Box(children=(title,fileSelector))
def _default_html_widget(self): return IPyWHTML(layout=self.layouts['html'])
def show_bars(self): self._pbar = ipywidgets.IntProgress() self._pbar_desc = ipywidgets.HTML(value=self._status_initial) self._pbar_total = ipywidgets.IntProgress() self._pbar_total_desc = ipywidgets.HTML(value=self._status_initial) display(ipywidgets.VBox([ipywidgets.HBox([self._pbar_total, self._pbar_total_desc]), ipywidgets.HBox([self._pbar, self._pbar_desc])]))
def define_site_description_image(self): '''Widgets for site description parameters''' self.w_latBut = widgets.Button(description='Browse Latitude Image') self.w_lat = widgets.Text( description='(Decimal degrees)', value='0', width=500) self.w_lonBut = widgets.Button(description='Browse Longitude Image') self.w_lon = widgets.Text( description='(Decimal degrees):', value='0', width=500) self.w_altBut = widgets.Button(description='Browse Altitude Image') self.w_alt = widgets.Text( description='(m):', value='0', width=500) self.w_stdlon_But = widgets.Button(description='Browse Standard Longitude Image') self.w_stdlon = widgets.Text( description='(Decimal degrees):', value='0', width=500) self.w_z_u_But = widgets.Button(description='Wind meas. height') self.w_z_u = widgets.Text( description='(m):', value=str(self.zu), width=500) self.w_z_T_But = widgets.Button(description='Air temp. meas. height') self.w_z_T = widgets.Text( description='(m):', value=str(self.zt), width=500) self.site_page = widgets.VBox([widgets.HTML('Select latitude image or type a constant value'), widgets.HBox([self.w_latBut, self.w_lat]), widgets.HTML('Select longitude image or type a constant value'), widgets.HBox([self.w_lonBut, self.w_lon]), widgets.HTML('Select altitude image or type a constant value'), widgets.HBox([self.w_altBut, self.w_alt]), widgets.HTML('Select standard longitude image or type a constant value'), widgets.HBox([self.w_stdlon_But, self.w_stdlon]), widgets.HTML('Select wind measurement height image or type a constant value'), widgets.HBox([self.w_z_u_But, self.w_z_u]), widgets.HTML('Select air temperature measurement height image or type a constant value'), widgets.HBox([self.w_z_T_But, self.w_z_T])]) self.w_latBut.on_click( lambda b: self._on_input_clicked(b, 'Latitude', self.w_lat)) self.w_lonBut.on_click( lambda b: self._on_input_clicked(b, 'Longitude', self.w_lon)) self.w_altBut.on_click( lambda b: self._on_input_clicked(b, 'Altitude', self.w_alt)) self.w_stdlon_But.on_click( lambda b: self._on_input_clicked(b, 'Standard Longitude', self.w_stdlon)) self.w_z_u_But.on_click( lambda b: self._on_input_clicked(b, 'Wind Measurement Height', self.w_z_u)) self.w_z_T_But.on_click( lambda b: self._on_input_clicked(b, 'Air Temperature Measurement Height', self.w_z_T))
def surface_properties_time_series(self): '''Widgets for canopy properties''' self.w_PT = widgets.BoundedFloatText( value=self.max_PT, min=0, description="Max. alphaPT", width=80) self.w_LAD = widgets.BoundedFloatText( value=self.x_LAD, min=0, description="LIDF param.", width=80) self.w_LAD.visible = False self.w_leafwidth = widgets.BoundedFloatText( value=self.leaf_width, min=0.001, description="Leaf width", width=80) self.w_zsoil = widgets.BoundedFloatText( value=self.z0soil, min=0, description="soil roughness", width=80) # Landcover classes and values come from IGBP Land Cover Type Classification self.w_lc = widgets.Dropdown( options={ 'WATER': 0, 'CONIFER EVERGREEN': 1, 'BROADLEAVED EVERGREEN': 2, 'CONIFER DECIDUOUS': 3, 'BROADLEAVED DECIDUOUS': 4, 'FOREST MIXED': 5, 'SHRUB CLOSED': 6, 'SHRUB OPEN': 7, 'SAVANNA WOODY': 8, 'SAVANNA': 9, 'GRASS': 10, 'WETLAND': 11, 'CROP': 12, 'URBAN': 13, 'CROP MOSAIC': 14, 'SNOW': 15, 'BARREN': 16 }, value=self.landcover, description="Land Cover Type", width=200) lcText = widgets.HTML(value='''Land cover information is used to estimate roughness. <BR> For shrubs, conifers and broadleaves we use the model of <BR> Schaudt & Dickinson (2000) Agricultural and Forest Meteorology. <BR> For crops and grasses we use a fixed ratio of canopy heigh''', width=100) self.calc_row_options() self.veg_page = widgets.VBox([widgets.HBox([self.w_PT, self.w_LAD, self.w_leafwidth]), widgets.HBox([self.w_zsoil, self.w_lc, lcText]), widgets.HBox([self.w_row, self.w_rowaz])], background_color='#EEE')
def surface_properties_image(self): '''Widgets for canopy properties''' self.w_PT_But = widgets.Button( description='Browse Initial alphaPT Image') self.w_PT = widgets.Text(description=' ', value=str(self.max_PT), width=500) self.w_LAD_But = widgets.Button( description='Browse Leaf Angle Distribution Image') self.w_LAD = widgets.Text(description='(degrees)', value=str(self.x_LAD), width=500) self.w_leafwidth_But = widgets.Button( description='Browse Leaf Width Image') self.w_leafwidth = widgets.Text(description='(m)', value=str(self.leaf_width), width=500) self.w_zsoil_But = widgets.Button( description='Browse Soil Roughness Image') self.w_zsoil = widgets.Text(description='(m)', value=str(self.z0soil), width=500) self.w_lc_But = widgets.Button( description='Browse Land Cover Image') # Landcover classes and values come from IGBP Land Cover Type Classification self.w_lc = widgets.Dropdown( options={ 'CROP': 12, 'GRASS': 10, 'SHRUB': 6, 'CONIFER': 1, 'BROADLEAVED': 4}, value=self.landcover, description=" ", width=300) lcText = widgets.HTML(value='''Land cover information is used to estimate roughness. <BR> For shrubs, conifers and broadleaves we use the model of <BR> Schaudt & Dickinson (2000) Agricultural and Forest Meteorology. <BR> For crops and grasses we use a fixed ratio of canopy height<BR>''', width=600) self.calc_row_options() self.veg_page = widgets.VBox([widgets.HTML('Select alphaPT image or type a constant value'), widgets.HBox([self.w_PT_But, self.w_PT]), widgets.HTML('Select leaf angle distribution image or type a constant value'), widgets.HBox([self.w_LAD_But, self.w_LAD]), widgets.HTML('Select leaf width image or type a constant value'), widgets.HBox([self.w_leafwidth_But, self.w_leafwidth]), widgets.HTML('Select soil roughness image or type a constant value'), widgets.HBox([self.w_zsoil_But, self.w_zsoil]), widgets.HTML('Select landcover image or type a constant value'), widgets.HBox([self.w_lc_But, self.w_lc]), lcText, widgets.HBox([self.w_row, self.w_rowaz])], background_color='#EEE') self.w_PT_But.on_click( lambda b: self._on_input_clicked(b, 'Initial alphaPT', self.w_PT)) self.w_LAD_But.on_click( lambda b: self._on_input_clicked(b, 'Leaf Angle Distribution', self.w_LAD)) self.w_leafwidth_But.on_click( lambda b: self._on_input_clicked(b, 'Leaf Width', self.w_leafwidth)) self.w_zsoil_But.on_click( lambda b: self._on_input_clicked(b, 'Soil Roughness', self.w_zsoil)) self.w_lc_But.on_click( lambda b: self._input_dropdown_clicked(b, 'Land Cover', self.w_lc))
def resistances_image(self): '''Widgets for resistance model selection''' self.w_res = widgets.ToggleButtons( description='Select TSEB model to run:', options={ 'Kustas & Norman 1999': 0, 'Choudhury & Monteith 1988': 1, 'McNaughton & Van der Hurk': 2}, value=self.res, width=300) self.w_PT_But = widgets.Button( description='Browse Initial alphaPT Image') self.w_PT = widgets.Text(description=' ', value=str(self.max_PT), width=500) self.w_KN_b_But = widgets.Button( description = 'Browse Resistance Parameter b Image') self.w_KN_b = widgets.Text( value=str(self.KN_b), description=' ', width=500) self.w_KN_c_But = widgets.Button( description = ('Browse Resistance Parameter c image')) self.w_KN_c = widgets.Text( value=str(self.KN_c), description='(m s-1 K-1/3)', width=500) self.w_KN_C_dash_But = widgets.Button( description = ("Browse Resistance Parameter C' Image")) self.w_KN_C_dash = widgets.Text( value=str(self.KN_C_dash), description="s1/2 m-1", width=500) self.KN_params_box = widgets.VBox([widgets.HTML('Select resistance parameter b image or type a constant value'), widgets.HBox([self.w_KN_b_But, self.w_KN_b]), widgets.HTML('Select resistance parameter c image or type a constant value'), widgets.HBox([self.w_KN_c_But, self.w_KN_c]), widgets.HTML('Select resistance parameter C\' image or type a constant value'), widgets.HBox([self.w_KN_C_dash_But, self.w_KN_C_dash])], background_color='#EEE') self.res_page = widgets.VBox([self.w_res, self.KN_params_box], background_color='#EEE') self.w_KN_b_But.on_click( lambda b: self._on_input_clicked(b, 'Resistance Parameter b', self.w_KN_b)) self.w_KN_c_But.on_click( lambda b: self._on_input_clicked(b, 'Resistance Parameter c', self.w_KN_c)) self.w_KN_C_dash_But.on_click( lambda b: self._on_input_clicked(b, 'Resistance Parameter C\'', self.w_KN_C_dash))
def _make_ui_pane(self, hostheight): layout = ipy.Layout(width='325px', height=str(int(hostheight.rstrip('px')) - 50) + 'px') #element_height = str(int(hostheight.rstrip('px')) - 125) + 'px' element_height = None # NOTE - element_height was used for the listbox-style orblist. # HOWEVER ipywidgets 6.0 only displays those as a dropdown. # This is therefore disabled until we can display listboxes again. -- AMV 7/16 # Orbital set selector self.status_element = ipy.HTML(layout=ipy.Layout(width='inherit', height='20px')) orbtype_label = ipy.Label("Orbital set:") self.type_dropdown = ipy.Dropdown(options=list(self.wfn.orbitals.keys())) initialtype = 'canonical' if initialtype not in self.type_dropdown.options: initialtype = next(iter(self.type_dropdown.options.keys())) self.type_dropdown.value = initialtype self.type_dropdown.observe(self.new_orb_type, 'value') # List of orbitals in this set orblist_label = ipy.Label("Orbital:") self.orblist = ipy.Dropdown(options={None: None}, layout=ipy.Layout(width=layout.width, height=element_height)) traitlets.link((self.orblist, 'value'), (self, 'current_orbital')) # Isovalue selector isoval_label = ipy.Label('Isovalue:') self.isoval_selector = ipy.FloatSlider(min=0.0, max=0.075, value=0.01, step=0.00075, readout_format='.4f', layout=ipy.Layout(width=layout.width)) traitlets.link((self.isoval_selector, 'value'), (self, 'isoval')) # Opacity selector opacity_label = ipy.Label('Opacity:') self.opacity_selector = ipy.FloatSlider(min=0.0, max=1.0, value=0.8, step=0.01, readout_format='.2f', layout=ipy.Layout(width=layout.width)) traitlets.link((self.opacity_selector, 'value'), (self, 'orb_opacity')) # Resolution selector resolution_label = ipy.Label("Grid resolution:", layout=ipy.Layout(width=layout.width)) self.orb_resolution = ipy.Text(layout=ipy.Layout(width='75px', positioning='bottom')) self.orb_resolution.value = str(self.numpoints) self.resolution_button = ipy.Button(description='Update resolution') self.resolution_button.on_click(self.change_resolution) traitlets.directional_link((self, 'numpoints'), (self.orb_resolution, 'value'), transform=str) self.uipane = ipy.VBox([self.status_element, orbtype_label, self.type_dropdown, orblist_label, self.orblist, isoval_label, self.isoval_selector, opacity_label, self.opacity_selector, resolution_label, self.orb_resolution, self.resolution_button]) self.new_orb_type() self.type_dropdown.observe(self.new_orb_type, 'value') return self.uipane
def __init__(self, xface): self.xface = xface if self.xface.is_installed(): version_string = xface.installed_version() if not version_string: version_string = 'unknown' if version_string != xface.expectedversion: version_string = '<span style="color:red">%s</span>' % version_string self.maintext = ipy.HTML( ('<span class="nbv-table-row nbv-width-med nbv-monospace">' ' {xface.packagename}</span> ' '<span class="nbv-table-row nbv-monospace nbv-width-sm">' ' {localversion}</span> ' '<span class="nbv-table-row nbv-monospace nbv-width-sm">' ' {xface.expectedversion}</span>' '<span class="nbv-width-sm nbv-table-row"> </span>' # empty space ).format(xface=xface, localversion=(version_string if self.xface.is_installed() else MISSING))) if xface.required: self.selector = ipy.ToggleButtons(options=['locally']) elif not xface.is_installed(): self.selector = ipy.ToggleButtons(options=['in docker'], button_style='warning') else: self.selector = ipy.ToggleButtons(options=['locally', 'in docker'], value='in docker' if xface.force_remote else 'locally', button_style='info') self.selector.observe(self._toggle, 'value') self.selector.add_class('nbv-width-lg') self.selector.add_class("nbv-table-row") children = [self.maintext, self.selector] if not self.xface.required and self.xface.is_installed(): self.save_button = ipy.Button(description='Make default') self.save_button.on_click(self.save_selection) self.save_button.add_class('nbv-table-row') children.append(self.save_button) super().__init__(children=children, layout=ipy.Layout(width='100%', align_items='flex-end'))
def __init__(self, paramdef): super(ParamSelector, self).__init__(layout=ipy.Layout(display='flex', flex_flow='nowrap', align_content='stretch')) self.paramdef = paramdef children = [] self.name = ipy.HTML("<p style='text-align:right'>%s:</p>" % paramdef.displayname, layout=ipy.Layout(width='200px')) children.append(self.name) if paramdef.choices: self.selector = ipy.Dropdown(options=paramdef.choices, **self.WIDGETKWARGS) elif paramdef.type == bool: self.selector = ipy.ToggleButtons(options=[True, False], **self.WIDGETKWARGS) elif paramdef.units: self.selector = UnitText(units=paramdef.units, **self.WIDGETKWARGS) elif paramdef.type == float: self.selector = ipy.FloatText(**self.WIDGETKWARGS) elif paramdef.type == int: self.selector = ipy.IntText(**self.WIDGETKWARGS) elif paramdef.type == str: self.selector = ipy.Text(**self.WIDGETKWARGS) else: self.selector = ReadOnlyRepr(**self.WIDGETKWARGS) children.append(self.selector) children = [self.name, self.selector] self.default_button = None if paramdef.default: self.default_button = ipy.Button(description='Default', tooltip='Set to default: %s' % self.paramdef.default, layout=ipy.Layout(width='75px')) self.default_button.on_click(self.default) children.append(self.default_button) self.default() self.help_link = None if paramdef.help_url: self.help_link = ipy.HTML('<a href="%s" target="_blank">?</a>' % paramdef.help_url) children.append(self.help_link) self.children = children
def __init__(self, mol): self._current_shapes = [] self.mol = mol self.tolerance = 0.3 * u.angstrom self.original_coords = mol.positions.copy() self.showing = ipy.HTML() self.viewer = mol.draw3d(width='650px') """:type viewer: moldesign.viewer.GeometryViewer""" self.description = ipy.HTML() self.symm_selector = ipy.Select() self.symm_selector.observe(self.show_symmetry, names='value') self.apply_button = ipy.Button(description='Symmetrize') self.apply_button.on_click(self.apply_selected_symmetry) self.reset_button = ipy.Button(description='Reset') self.reset_button.on_click(self.reset_coords) self.apply_all_button = ipy.Button(description='Apply all', layout=ipy.Layout(padding='10px')) self.apply_all_button.on_click(self.set_highest_symmetry) self.tolerance_descrip = ipy.HTML(u'<small>tolerance/\u212B</small>',) self.tolerance_chooser = ipy.BoundedFloatText(value=self.tolerance.value_in(u.angstrom), min=0.0) self.recalculate_button = ipy.Button(description='Recalculate') self.recalculate_button.on_click(self.coords_changed) self.symm_pane = VBox([self.description, self.symm_selector, HBox([self.apply_button, self.reset_button]), self.apply_all_button, HBox([self.tolerance_chooser, self.recalculate_button]), self.tolerance_descrip], layout=ipy.Layout(width='325px')) self.symmetry = None self.coords_changed() self.hbox = HBox([VBox([self.viewer, self.showing]), self.symm_pane]) super().__init__([self.hbox])