2016-09-19 4 views
2

J'essaie de comprendre comment aligner un ListBox correctement. Dès que j'insère les lignes de ListBox, la mise en page se transforme en désordre.Aligner ListBox dans le cadre wxpython

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
import wx 

oplist=[] 
with open("options.txt","r") as f: 
    for line in f: 
     oplist.append(line.rstrip('\n')) 
print(oplist) 

class Example(wx.Frame): 

    def __init__(self, parent, title): 
     super(Example, self).__init__(parent, title = title, size=(200,300)) 

     self.InitUI() 
     self.Centre() 
     self.Show() 

    def InitUI(self): 
     p = wx.Panel(self) 
     vbox= wx.BoxSizer(wx.VERTICAL) 
     self.l1 = wx.StaticText(p, label="Enter number", style=wx.ALIGN_CENTRE) 
     vbox.Add(self.l1, -1, wx.ALIGN_CENTER_HORIZONTAL, 200) 
     self.b1 = wx.Button(p, label="Buton 1") 
     vbox.Add(self.b1, -1, wx.ALIGN_CENTER_HORIZONTAL,100) 
     self.flistbox= wx.ListBox(self,choices=oplist, size=(100,100), name="Field", wx.ALIGN_CENTER_HORIZONTAL) 
     vbox.Add(self.flistbox, -1, wx.CENTER, 10) 
     p.SetSizer(vbox) 

app = wx.App() 
Example(None, title="BoxSizer") 
app.MainLoop() 

Voici les sorties avec et sans: With ListBox Without

Répondre

1

La zone de liste est en cours de parentés au cadre en utilisant l'auto.

self.flistbox= wx.ListBox(
    self,choices=oplist, size=(100,100), name="Field", wx.ALIGN_CENTER_HORIZONTAL) 

Il doit être apparenté au panneau en utilisant p comme les autres contrôles.

self.flistbox= wx.ListBox(
    p,choices=oplist, size=(100,100), name="Field", wx.ALIGN_CENTER_HORIZONTAL)