2014-11-24 155 views
3

這確實是一個微不足道的問題,但它仍然很煩人。我正在編寫一個工具,允許用戶在IPython筆記本中爲分析設置一些數字參數。我已將它設置爲FloatTextWidget s在ContainerWidget中。他們有相當長的標籤,如「姿勢點數」或「背景磁盤半徑」。他們沒有很好地排隊。這是因爲長度的原因:如this page所述,「小部件的標籤具有固定的最小寬度。標籤的文本總是右對齊,小部件左對齊...如果標籤長於最小值寬度,小部件向右移動。「更改IPython筆記本小部件中標籤的大小

我的標籤超過了「固定最小寬度」。我想知道的是如何改變它。我在Widget源代碼中探索過,並且在任何地方都找不到它。

編輯:針對@Jakob,here is some code,這裏是截圖here is a screenshot

在這個例子中,「閾值:」小到足以適合標籤寬度範圍內,但所有的人都太長。

+0

你能否提供一些代碼,一起玩,好嗎? – Jakob 2014-11-25 06:48:02

+0

@Jakob:我添加了一些代碼和截圖的鏈接。 – 2014-11-25 14:42:30

回答

0

嗯,我發現狹窄的回答我的問題:最小字段寬度在site-packages/IPython/html/static/style/ipython.min.css定義(位於任何地方你的Python庫生活 - 我的最大即/Library/Python/2.7/),其中widget-hlabel

.widget-hlabel{min-width:10ex;padding-right:8px;padding-top:3px;text-align:right;vertical-align:text-top} 
定義

min-width:10ex是相關部分。

儘管可以覆蓋整個文檔的這一點,但我沒有看到一次更換一個小部件的簡單方法。它必須在JavaScript端完成,因爲FloatTextWidget類不允許從python端單獨訪問Widget的標籤組件。這就需要開發一個自定義的小部件,從FloatTextWidget開始,這對於這樣一個簡單的問題看起來太費事,而且易於引導。至少,這是我看到這樣做的唯一方式 - 更正歡迎。相反,我決定完全避免使用它們的描述來自動標記小部件,而是將每個標籤構造爲HTMLWidget,這使我可以完全控制其外觀。這裏是什麼樣子:screenshot

+0

我同意你的發現,即沒有簡單的方法來改變個別小部件的風格。然而,看着你的新形象,我想知道爲什麼你不是簡單地在頁面中注入一些CSS樣式來改變widget-hlabel類的'min-width'?這會導致與您的視圖非常相似的視圖。 – Jakob 2014-11-25 21:36:58

+1

我不想更改頁面中所有標籤的最小寬度,只是該工具的此特定面板中的最小寬度。 (最終這將是一個'TabWidget'的一個選項卡。)如果你能告訴我如何注入CSS,以便它只能在本地應用,那就太好了。 – 2014-11-25 22:17:15

2

從筆記本中改變風格:

from IPython.display import HTML, display 

display(HTML('''<style> 
    .widget-label { min-width: 20ex !important; } 
</style>''')) 
相關問題