如何处理ipywidgets中按钮的可变宽度
how to deal with variable width of Buttons in ipywidgets
我需要显示一堆按钮。
每个按钮的描述对应文本的每个单词。
为了给一个文本外观,我想使按钮宽度符合里面单词的长度。
所以我创建了一个变量,根据字母的数量给出宽度 px。
我不知道为什么,但效果不佳。它适用于某些单词,但不适用于其他单词。
一些想法?
(在屏幕截图中看到单词 "the" 没有足够的 space 并且只有 ... 显示。
最终目标当然是让文本看起来像我可以点击单词的文本一样正常。
谢谢。
mylist=['loren','ipsum','whapmmtever','loren','ipsum','otra','the','palabra','concept']
list_btns=[]
for i,word in enumerate(mylist):
# here I try to define the width of the button as depending on the length of the word:
wordwidth= str(len(word)*12) + 'px'
wd_raw_save_button = widgets.Button(description=word,
disabled=False,
button_style='success',
tooltip='check the word',
icon='',
layout = Layout(width = wordwidth, margin='0px 0px 0px 0px'))
list_btns.append(wd_raw_save_button)
showcase=HBox(list_btns)
showcase
实际上 运行 瞧瞧我得到的结果:
这不会给人以真实文本的印象,即单词之间的相同间距是最终目标。
我猜,但我不确定,原因可能是字符的宽度不同,我将不得不逐个字符地计算宽度。但这并不能解释 "the" 这个词不适合按钮。
第二种解释是,潜在的 CSS 假设了一个特定的最小边界,该边界 "over" 单词本身。无论如何,我不知道如何 control/influence 它。
CSS 对小部件的控制有限。似乎有一个大约 40px 的截止点,文本将被截断。我使用了一个简单的 max
比较来希望接近您正在寻找的内容:
from ipywidgets import *
mylist=['loren','ipsum','whapmmtever','loren','ipsum','otra','the','palabra','concept', 'a'] * 2
list_btns=[]
for i,word in enumerate(mylist):
# here I try to define the width of the button as depending on the length of the word:
wordwidth= max(len(word) * 12, 40)
wordwidth = str(wordwidth) + 'px'
wd_raw_save_button = widgets.Button(description=word,
disabled=False,
button_style='success',
tooltip='check the word',
icon='',
layout = Layout(width = wordwidth, margin='0px 0px 0px 0px')
)
list_btns.append(wd_raw_save_button)
showcase=HBox(list_btns, layout= Layout(width='100%'))
showcase
我需要显示一堆按钮。 每个按钮的描述对应文本的每个单词。
为了给一个文本外观,我想使按钮宽度符合里面单词的长度。 所以我创建了一个变量,根据字母的数量给出宽度 px。
我不知道为什么,但效果不佳。它适用于某些单词,但不适用于其他单词。
一些想法? (在屏幕截图中看到单词 "the" 没有足够的 space 并且只有 ... 显示。
最终目标当然是让文本看起来像我可以点击单词的文本一样正常。
谢谢。
mylist=['loren','ipsum','whapmmtever','loren','ipsum','otra','the','palabra','concept']
list_btns=[]
for i,word in enumerate(mylist):
# here I try to define the width of the button as depending on the length of the word:
wordwidth= str(len(word)*12) + 'px'
wd_raw_save_button = widgets.Button(description=word,
disabled=False,
button_style='success',
tooltip='check the word',
icon='',
layout = Layout(width = wordwidth, margin='0px 0px 0px 0px'))
list_btns.append(wd_raw_save_button)
showcase=HBox(list_btns)
showcase
实际上 运行 瞧瞧我得到的结果:
这不会给人以真实文本的印象,即单词之间的相同间距是最终目标。 我猜,但我不确定,原因可能是字符的宽度不同,我将不得不逐个字符地计算宽度。但这并不能解释 "the" 这个词不适合按钮。 第二种解释是,潜在的 CSS 假设了一个特定的最小边界,该边界 "over" 单词本身。无论如何,我不知道如何 control/influence 它。
CSS 对小部件的控制有限。似乎有一个大约 40px 的截止点,文本将被截断。我使用了一个简单的 max
比较来希望接近您正在寻找的内容:
from ipywidgets import *
mylist=['loren','ipsum','whapmmtever','loren','ipsum','otra','the','palabra','concept', 'a'] * 2
list_btns=[]
for i,word in enumerate(mylist):
# here I try to define the width of the button as depending on the length of the word:
wordwidth= max(len(word) * 12, 40)
wordwidth = str(wordwidth) + 'px'
wd_raw_save_button = widgets.Button(description=word,
disabled=False,
button_style='success',
tooltip='check the word',
icon='',
layout = Layout(width = wordwidth, margin='0px 0px 0px 0px')
)
list_btns.append(wd_raw_save_button)
showcase=HBox(list_btns, layout= Layout(width='100%'))
showcase