wxPython에서 고정 세로 세로 비율로 작성한 하위 패널을 가운데에 정렬하는 데 문제가 있습니다.가로 세로 비율이 조절 된 가운데 패널을 사용하는 방법
가로 세로 비율을 제어하려면 하위 패널에서 Size 이벤트를 캡처 한 다음 명시적인 SetSize를 수행해야합니다. 그래서, 나는 그것을했고 잘 작동합니다. 불행히도이 하위 패널을 다른 패널 (사이퍼 사용)에 포함하면 wx.ALIGN_CENTER_HORIZONTAL 플래그가 작동하지 않습니다.
사이퍼는 내 하위 패널에 전체 너비가 맞는지 알려줍니다. 내 윈도우가 전체 너비를 사용하지 않으면 사이 저는 조정되지 않습니다.
import wx
ROWS = 6
COLS = 25
class TestPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
label = wx.StaticText(self, -1, 'Label')
grid = TestGrid(self)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(label, 0, flag=wx.ALIGN_CENTER_HORIZONTAL)
sizer.Add(grid, 1, flag=wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND)
self.SetSizer(sizer)
class TestGrid(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
self.SetBackgroundColour(wx.BLUE)
self.Bind(wx.EVT_SIZE, self.OnSize)
def OnSize(self, event):
w, h = self.GetSizeTuple()
delta = min(w // COLS, h // ROWS)
self.SetSize((COLS*delta, ROWS*delta))
self.Refresh()
if __name__ == '__main__':
app = wx.App()
frame = wx.Frame(None, -1, "Test", size=(600, 200))
panel = TestPanel(frame)
frame.Show(True)
app.MainLoop()
이 화면 캡처입니다 :
훌륭함 - 완벽하게 작동했습니다! – user2483736