Python / Jupyter Notebook - 如何禁用小部件 VBOX/HBOX 中的文本截断?

问题描述 投票:0回答:1

我在文档和论坛中进行了搜索,但没有找到答案,所以我在这里询问...

enter image description here

这是我的一行代码来设置我的小部件:

bankroll_init = wg.IntSlider(min=1000, max=10000, step=500, value=3000, description='Initial Bankroll')

这是我的 VBox,用于显示我的所有小部件:

ui = wg.VBox([bankroll_init, bet_init, multiplier,odds_category,league]) 
out = wg.interactive_output(calcul, {'bankroll_init': bankroll_init, 'bet_init': bet_init,
                                 'multiplier': multiplier,'odds_category':odds_category,'league':league})

display(ui)
display(out)

我不希望每个小部件的描述被裁剪/截断。请问我怎么能强迫它?

python jupyter-notebook widget truncate
1个回答
2
投票

对于滑块,这在 ipywidgets“Jupyter 小部件布局”文档的“描述”标题下中有介绍。 (搜索文本“可能已经注意到长描述被截断”以找到文档文本中的确切点。)以下是使用样式器的选项:

import plotly.graph_objs as go import numpy as np from ipywidgets import widgets from IPython.display import display def calcul(bankroll_init, bet_init): print((bankroll_init + bet_init)) style = {'description_width': 'initial'} bankroll_init = widgets.IntSlider(min=1000, max=10000, step=500, value=3000, description='Initial Bankroll', style = style) bet_init = widgets.IntSlider(min=10, max=10000, step=500, value=3000, description='First Bet') ui = widgets.VBox([bankroll_init, bet_init]) out = widgets.interactive_output(calcul, {'bankroll_init': bankroll_init, 'bet_init': bet_init,}) display(ui) display(out)
您还可以直接将 HBox 与 Label 小部件一起使用:

import plotly.graph_objs as go import numpy as np from ipywidgets import widgets, HBox, Label from IPython.display import display def calcul(bankroll_init, bet_init): print((bankroll_init + bet_init)) bankroll_init = widgets.IntSlider(min=1000, max=10000, step=500, value=3000 ) bet_init = widgets.IntSlider(min=10, max=10000, step=500, value=3000, description='First Bet') ui = widgets.VBox([HBox([Label('Initial Bankroll'), bankroll_init]), bet_init]) out = widgets.interactive_output(calcul, {'bankroll_init': bankroll_init, 'bet_init': bet_init,}) display(ui) display(out)
对于下拉菜单,您可以执行类似的操作:

from ipywidgets import widgets style = {'description_width': 'initial'} widgets.Dropdown( options=['Option 1', 'Option 2', 'Option 3'], value='Option 1', description='Choose your own adventure:', disabled=False, style = style )
正如RadioButtons文档中“使用动态布局和非常长的标签”子标题下所介绍的那样,您可以将类似的样式方法与控制布局结合起来,这样长描述就不会夹入按钮区域并移动项目名称从按钮圆圈旁边:

from ipywidgets import widgets style = {'description_width': 'initial'} widgets.RadioButtons( options=['pepperoni', 'pineapple', 'anchovies'], layout={'width': 'max-content'}, # If the items' names are long description='Pizza topping with a very long label:', disabled=False, style = style )

为了进行比较,您将看到以下剪辑:
from ipywidgets import widgets
style = {'description_width': 'initial'}
widgets.RadioButtons(
    options=['pepperoni', 'pineapple', 'anchovies'],
#    layout={'width': 'max-content'}, # If the items' names are long
    description='Pizza topping with a very long label:',
    disabled=False,
    style = style
)

将所有内容整合在一起

这应该会给出像您在图片中发布的内容: import plotly.graph_objs as go import numpy as np from ipywidgets import widgets from IPython.display import display def calcul(bankroll_init, bet_init): print((bankroll_init + bet_init)) style = {'description_width': 'initial'} bankroll_init = widgets.IntSlider(min=1000, max=10000, step=500, value=3000, description='Initial Bankroll', style = style) bet_init = widgets.IntSlider(min=10, max=10000, step=500, value=3000, description='First Bet') multiplier = widgets.IntSlider(min=1000, max=10000, step=500, value=3000, description='Multiplier accent',style = style) odds_category = widgets.RadioButtons( options=[1, 2, 3], #layout={'width': 'max-content'}, # If the items' names are long description='1= Odds< 1; 2 = something else, on & on', disabled=False, style = style ) league = widgets.Dropdown( options=['League 1', 'League 2', 'League 3'], value='League 1', description='Choose your own adventure:', disabled=False, style = style ) ui = widgets.VBox([bankroll_init, bet_init, multiplier,odds_category,league]) out = widgets.interactive_output(calcul, {'bankroll_init': bankroll_init, 'bet_init': bet_init, 'multiplier': multiplier,'odds_category':odds_category,'league':league}) display(ui) display(out)

上面的所有代码块均已开发,可以在浏览器中正常工作,无需通过通过此处启动的
mybinder-served会话进行安装
,其中环境由pip安装包的

此列表确定。这些特定示例中未使用列出的许多内容。 将来发帖时,不要只包含代码片段。包括一个

最小的可重现示例
,这样那些试图帮助您的人就不必根据图像对代码进行逆向工程来处理某些事情。这也可以帮助您获得更接近您所拥有的东西。

© www.soinside.com 2019 - 2024. All rights reserved.