2016-09-19 6 views
2

ListBox를 올바르게 정렬하는 방법을 찾으려고합니다. ListBox의 선을 삽입하자마자 레이아웃이 엉망으로 바뀝니다. 와없이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)