在python中,根據字符數很容易填充空格字符串。例如:Python:根據* actual *長度的填充字符串
print "aaa".ljust(10) + "end"
print "www".ljust(10) + "end"
輸出是:
aaa end
www end
其中在此處或任何其他顯示所有字符的大小等於看起來不錯。但是當我在Tkinter
程序中輸出這兩個字符串時,它們不會對齊,因爲字符'a'和'w'在任何Tkinter字體中具有不同的長度。
如何對齊Tkinter
中的字符串?
我的代碼:
from Tkinter import *
STANDARD_FONT = ("David",14)
TO = "TO"
SUBJECT = "SUBJECT"
DATE = "DATE"
content = [
{TO:'Frye', SUBJECT:'Water Pipe Replacement Cost', DATE:'July 9'},
{TO:'George', SUBJECT:'Fw: Cell phone reimbursement', DATE:'July 9'},
{TO:'George, Tim', SUBJECT:'Travel', DATE:'July 10'},
{TO:'Sandy, Jim', SUBJECT:'Fw: Welcome to WOW! - News', DATE:'July 10'},
{TO:'Sandy, Jim', SUBJECT:'Re: Present from paulette', DATE:'July 10'},
{TO:'George, Tim, Sandy, Jim', SUBJECT:'Voices Across Alaska: State Budget Priorities', DATE:'July 10'},
{TO:'Frye', SUBJECT:'FW: Confirmation of the Novemberl 5th discussion', DATE:'July 10'},
{TO:'Jim', SUBJECT:'Re: Happy Thanksgiving!', DATE:'July 11'}
]
def makeWindow() :
global nameVar, phoneVar, select
win = Tk()
frame1 = Frame(win)
frame1.pack()
frame2 = Frame(win) # Row of buttons
frame2.pack()
frame3 = Frame(win) # select of names
frame3.pack()
scroll = Scrollbar(frame3, orient=VERTICAL)
select = Listbox(frame3, yscrollcommand=scroll.set, height=17, width=100, font=STANDARD_FONT)
scroll.config (command=select.yview)
scroll.pack(side=RIGHT, fill=Y)
select.pack(side=LEFT, fill=BOTH, expand=1)
return win
def format_mail_str(mail):
to = "To: " + mail[TO]
subject = mail[SUBJECT]
date = mail[DATE]
spacing = " " * 5
return to.ljust(40) + spacing + subject.ljust(30) + spacing + date.ljust(15)
def setSelect() :
select.delete(0,END)
for mail in content:
select.insert (END, format_mail_str(mail))
win = makeWindow()
setSelect()
win.mainloop()
我想要的主題和日期都行之間排列。
在GUI或Web瀏覽器中對齊文本通常意味着您只需將文本放在實際列中,而不是依靠文本之間的空白來對齊任何內容。 –
在我的具體案例中,我使用的是Tkinter,它似乎每個字體都有不同長度的字符 – zvisofer
@MartijnPieters,我重寫了我的問題。請重新打開它。 – zvisofer