다음 코드를 적용하면 두 번째 패널이 첫 번째 패널 위에 표시됩니다. 두 개의 패널을 겹치지 않고 적절한 크기의 창 (프레임)으로 가져올 수있는 방법을 알고 싶습니다. 또한 패널에 어떤 종류의 제목을 그릴 수있는 적절한 방법이 있는지 알고 싶습니다 (이 경우 "입력 :"및 "출력 :"). 감사!wxpython 패널 크기 및 제목
import wx
class Input_Panel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
# Input variables
self.tittle1 = wx.StaticText(self, label="Inputs:")
self.lblname1 = wx.StaticText(self, label="Input 1:")
self.format1 = ['Option 1','Option 2']
self.combo1 = wx.ComboBox(self, size=(200, -1),value='', choices=self.format1, style=wx.CB_DROPDOWN)
self.lblname2 = wx.StaticText(self, label="Input 2")
self.format2 = ['Option 1','Option 2', 'Option 3']
self.combo2 = wx.ComboBox(self, size=(200, -1),value='', choices=self.format2, style=wx.CB_DROPDOWN)
# Set sizer for the panel content
self.sizer = wx.GridBagSizer(2, 2)
self.sizer.Add(self.tittle1, (1, 2))
self.sizer.Add(self.lblname1, (2, 1))
self.sizer.Add(self.combo1, (2, 2))
self.sizer.Add(self.lblname2, (3, 1))
self.sizer.Add(self.combo2, (3, 2))
self.SetSizer(self.sizer)
class Output_Panel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
# Output variables
self.tittle2 = wx.StaticText(self, label="Outputs:")
self.lblname3 = wx.StaticText(self, label="Output1")
self.result3 = wx.StaticText(self, label="", size=(100, -1))
# Set sizer for the panel content
self.sizer = wx.GridBagSizer(2, 2)
self.sizer.Add(self.tittle2, (1, 2))
self.sizer.Add(self.lblname3, (2, 1))
self.sizer.Add(self.result3, (2, 2))
self.SetSizer(self.sizer)
class Main_Window(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title = title)
# Set variable panels
self.splitter = wx.SplitterWindow(self)
self.panel1 = Input_Panel(self.splitter)
self.panel2 = Output_Panel(self.splitter)
self.splitter.SplitVertically(self.panel1, self.panel2)
self.windowSizer = wx.BoxSizer(wx.VERTICAL)
self.windowSizer.Add(self.splitter, 1, wx.ALL | wx.EXPAND)
self.SetSizerAndFit(self.windowSizer)
def main():
app = wx.App(False)
frame = Main_Window(None, "App GUI")
frame.Show()
app.MainLoop()
if __name__ == "__main__" :
main()
대단히 고맙습니다 만, 각 패널마다 다른 크기를 설정할 수 있는지 알고 싶습니다. 확장 된 코드에서 오른쪽 패널은 왼쪽 패널보다 훨씬 작으며 "self.splitter.SetMinimumPaneSize (120)"를 사용할 때별로 좋지 않습니다. 그리고 이전에 물어 보았던 것처럼 제목을 추가 할 수 있습니까? – wuampa
실제로 프레임의 크기를 사용하고 창 크기를 절반으로 설정하면 크기가 동일 해집니다. 제목에 관해서는 StaticText 위젯이나 비슷한 것을 사용해야 할 것입니다. –
제가 너무 많이 원한다는 것을 알고 있지만 예제를 물어볼 수 있습니까? – wuampa