2016-09-19 45 views
2

我想弄清楚如何正確對齊ListBox。只要我插入列表框的行,佈局轉換成一團糟。對齊框中的列表框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() 

在這裏有和沒有輸出: With ListBox Without

回答

1

列表框正被使用自父到框架。

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

它應該與面板一樣使用p,與其他控件一樣。

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