2013-01-02 57 views
2

我有一個Python程序可以在Ubuntu中創建一個指示符通知。如何確定需要添加多少製表符以確保輸出始終垂直排列?在Python中獲取輸出tab-in-line

我試着對使用的字符進行計數並插入空格而不是製表符,但是這不起作用,因爲使用了非單色字體。在該圖所示

輸出:

Enter image description here

輸出該行中的代碼:

for processName in processStatuses: 
    if processName in cachedProcessStatuses: 
     if processStatuses[processName] != cachedProcessStatuses[processName]: 
      output += processName 
      output += " : \t" 
      output += processStatuses[processName] 
      output += "\n" 
    else: 
     output += processName 
     output += " : \t" 
     output += processStatuses[processName] 
     output += "\n" 

回答

3

...作爲非單聲道字體被使用。

在這種情況下,您需要知道字體幾何(不是一項簡單的任務)。

字符串「IIII」時間比「MMMM」更小的空間,但不知道的字體的幾何形狀(單個字符以及它們的相對水平位置的精確寬度),就可以不知道,是否一個特定的字符串比tabwidth寬或不寬。

+3

即使那麼機會可能沒有正確的整數計數,這將對齊文本 – none

+1

有http://stackoverflow.com/questions/2922295/calculating-the-pixel-size-of-a-string-with-python這可能與你所能得到的一樣好,而這只是一個最好的猜測,因爲這不是用tkinter來做實際的顯示。 –

+1

只是想知道是否強制第一列到一定的寬度(字符明智)會有意義/工作......「{:50}:{}'。format('a','b')' –