3
다음 코드는 텍스트를 윈도우의 중앙에 표시해야합니다. 즉, 내부 패널의 중앙에 있습니다. 그러나 나는 왜 그렇게 생각하지 않는지 궁금합니다. 코드를 실행하면 150px x 150px 크기의 프레임 중간에 흰색 패널이 표시됩니다. 이 영역의 크기를 전혀 변경하지 않으려 고하지만 일부 텍스트 (코드 조각의 중간에 txt
변수를 주석 처리하지 않음)를 추가하면 패널이 항상 텍스트에 맞게 축소됩니다. 패널과 일치하도록 StaticText
의 크기를 지정하는 것조차도 텍스트가 가운데 정렬되지 않기 때문에 해결책이 아닙니다.wxpython : 사이 저 내의 패널 내에 텍스트 가운데 맞추기
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title)
self.rootPanel = wx.Panel(self)
innerPanel = wx.Panel(self.rootPanel,-1, size=(150,150), style=wx.ALIGN_CENTER)
innerPanel.SetBackgroundColour('WHITE')
hbox = wx.BoxSizer(wx.HORIZONTAL)
vbox = wx.BoxSizer(wx.VERTICAL)
# I want this line visible in the CENTRE of the inner panel
#txt = wx.StaticText(innerPanel, id=-1, label="TEXT HERE",style=wx.ALIGN_CENTER, name="")
hbox.Add(innerPanel, 0, wx.ALL|wx.ALIGN_CENTER)
vbox.Add(hbox, 1, wx.ALL|wx.ALIGN_CENTER, 5)
self.rootPanel.SetSizer(vbox)
vbox.Fit(self)
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'wxBoxSizer.py')
frame.Show(True)
frame.Center()
return True
app = MyApp(0)
app.MainLoop()
감사합니다. Mike. 나이를 먹으려 고 노력했는데 스페이서 접근 방식이 잘 작동합니다. 그러나 유비 쿼터스처럼 뭔가 할 일선이 있어야한다는 것을 느낄 수는 없습니다. –
음, 스페이서를 만든 다음 sizer의 AddMany() 메서드를 사용하여 세 가지를 모두 추가 할 수 있습니다. 내가 잊어 버린 래퍼가 있거나 SizedControls가 작동 할 수도 있습니다. 나는 후자를 실제로 사용하지 않았다. –