我是Python的新手,我希望在wx.ListBox
中显示具有特定格式的字符串。
例如:正确对齐,但显示如下。
CODE:
fileName = fileName + str(" " * (38 - len(fileName)))
self.displayList.append( " %02d %s %0.2fKB" % (index+1, fileName, fileSize ))
当我打印self.displayList
时,显示正确对齐。
让我知道我错在哪里,或者应该用其他方式显示正确对齐的字符串。
修改
首先感谢您的回复。
通过应用你的(Sundar Nataraj)解决方案,输出与你提到的相同,但它在控制台上,而在wx.ListBox中,再次没有正确格式化。
见下图。
我只是将displayList作为参数传递。
self.autoNcListbox = wx.ListBox(self.autoProgListPanel, wx.ID_ANY, wx.Point( 0, 25), wx.Size( 512, 510 ), self.displayList, wx.RAISED_BORDER)
答案 0 :(得分:1)
试试这个,
index=[1,2,3,4]
text=['animal','gv','asdfasdfasd','adfasdfasdf']
size=['1kb','2kb','3kb','4kb']
displaylist=[]
for i in zip(index,text,size):
s=""
for j in range(0,3):
s +='{0:{fill}{align}16}'.format(i[j], fill=' ', align='<')
print s
displaylist.append(s)
for i in displaylist:
print i
输出
1 animal 1kb
2 gv 2kb
3 asdfasdfasd 3kb
4 adfasdfasdf 4kb
编辑:
import wx
import sys
from wx.lib.mixins.listctrl import ListCtrlAutoWidthMixin
index=[1,2,3,4]
text=['animal','gv','asdfasdfasd','adfasdfasdf']
size=['1kb','2kb','3kb','4kb']
displaylist=[]
for i,j,l in zip(index,text,size):
displaylist.append((i,j,l))
class AutoWidthListCtrl(wx.ListCtrl, ListCtrlAutoWidthMixin):
def __init__(self, parent):
wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
ListCtrlAutoWidthMixin.__init__(self)
class Actresses(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(380, 230))
hbox = wx.BoxSizer(wx.HORIZONTAL)
panel = wx.Panel(self, -1)
self.list = AutoWidthListCtrl(panel)
self.list.InsertColumn(0, 'index', width=140)
self.list.InsertColumn(1, 'text', width=130)
self.list.InsertColumn(2, 'filesize', wx.LIST_FORMAT_RIGHT, 90)
for i in displaylist:
index = self.list.InsertStringItem(sys.maxint, str(i[0]))
self.list.SetStringItem(index, 1, i[1])
self.list.SetStringItem(index, 2, i[2])
hbox.Add(self.list, 1, wx.EXPAND)
panel.SetSizer(hbox)
self.Centre()
self.Show(True)
app = wx.App()
Actresses(None, -1, 'file')
app.MainLoop()