Python wx.ListBox中的字符串格式
我是Python新手,我想在Python wx.ListBox中的字符串格式,python,linux,listbox,string-formatting,Python,Linux,Listbox,String Formatting,我是Python新手,我想在wx.ListBox中显示特定格式的字符串 例如:正确对齐,但显示如下 代码: fileName = fileName + str(" " * (38 - len(fileName))) self.displayList.append( " %02d %s %0.2fKB" % (index+1, fileName, fileSize )) 当我打印self.displayList时,它以正确的对齐方式显示 让我知道我错在哪里,或者
wx.ListBox
中显示特定格式的字符串
例如:正确对齐,但显示如下
代码:
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)
这样试试看
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
编辑:
您可以添加代码示例,说明如何在页面底部的wxlist框中显示您的mixin。。你有没有尝试过我已经研究过的,但没有找到我问题的解决方案…只是在编辑后尝试代码没有解决问题…:(查看问题的编辑部分。
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()