wxpython - Développer le contrôle de liste verticalement et non horizontalement
Question
J'ai un ListCtrl qui affiche une liste d'éléments que l'utilisateur peut sélectionner. Cela fonctionne bien, sauf que lorsque la commande Ctrl n'est pas assez grande pour afficher tous les éléments, je souhaite qu'elle se développe vers le bas avec une barre de défilement verticale plutôt que d'utiliser une barre de défilement horizontale lorsqu'elle se déploie vers la droite.
La création du ListCtrl:
self.subjectList = wx.ListCtrl(self, self.ID_SUBJECT, style = wx.LC_LIST | wx.LC_SINGLE_SEL | wx.LC_VRULES)
Les éléments sont insérés à l'aide de wx.ListItem:
item = wx.ListItem()
item.SetText(subject)
item.SetData(id)
item.SetWidth(200)
self.subjectList.InsertItem(item)
La solution
Utilisez le style wxLC_REPORT .
import wx
class Test(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.test = wx.ListCtrl(self, style = wx.LC_REPORT | wx.LC_NO_HEADER)
for i in range(5):
self.test.InsertColumn(i, 'Col %d' % (i + 1))
self.test.SetColumnWidth(i, 200)
for i in range(0, 100, 5):
index = self.test.InsertStringItem(self.test.GetItemCount(), "")
for j in range(5):
self.test.SetStringItem(index, j, str(i+j)*30)
self.Show()
app = wx.PySimpleApp()
app.TopWindow = Test()
app.MainLoop()
Autres conseils
Essayez ceci:
import wx
class Test(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.test = wx.ListCtrl(self, style = wx.LC_ICON | wx.LC_AUTOARRANGE)
for i in range(100):
self.test.InsertStringItem(self.test.GetItemCount(), str(i))
self.Show()
app = wx.PySimpleApp()
app.TopWindow = Test()
app.MainLoop()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow