Python 拉伸面板以填充整个窗口,而不是仅填充一个角

Python 拉伸面板以填充整个窗口,而不是仅填充一个角,python,wxpython,Python,Wxpython,当我运行我的wxPython应用程序(下面的代码)时,所有小部件似乎都聚集在窗口的左上角。我想要它,这样窗户的大小就和施胶器的大小完全一样,但我似乎不能完全做到这一点 这就是我得到的: 这就是我想要的效果,减去糟糕的灰色背景: 有没有办法拉伸父面板,使其填满整个窗口?卸下面板似乎给了我想要的东西,但如果没有它,整个窗户会变成单调的深灰色,从美学角度看,它看起来不自然,所以如果可能的话,我想保留它 根据wx.version()的说法,我在Python2.7.6上使用的是3.0.0.0 msw(

当我运行我的wxPython应用程序(下面的代码)时,所有小部件似乎都聚集在窗口的左上角。我想要它,这样窗户的大小就和施胶器的大小完全一样,但我似乎不能完全做到这一点

这就是我得到的:

这就是我想要的效果,减去糟糕的灰色背景:

有没有办法拉伸父面板,使其填满整个窗口?卸下面板似乎给了我想要的东西,但如果没有它,整个窗户会变成单调的深灰色,从美学角度看,它看起来不自然,所以如果可能的话,我想保留它

根据wx.version()的说法,我在Python2.7.6上使用的是3.0.0.0 msw(经典版)

class MyMenu(wx.Frame):

    def __init__(self, parent, id, title):
        super(MyMenu, self).__init__(parent, id, title)

        valid_targets = ["jpg", "gif", "pcx", 
            "msp", "png", "ppm", "tiff"]

        # Cheap Image Converter v .1
        # File to convert: [            ] <Select File>
        # Convert to: [.jpg]v 
        # [CONVERT]

        self.convert_target = None
        self.raw_file = []
        self.panel = wx.Panel(self, -1)

        # all elements will be declared in the order in which
        # they appear, top to bottom, left to right.
        self.intro_text = wx.StaticText(self.panel, -1, "Image Converter v 0.1")

        # Load files button and binding
        self.file_convert_text = wx.StaticText(self.panel, -1,
            "Select a file to convert.")
        self.file_text_box = wx.TextCtrl(self.panel, -1,
            "Select a file!", style=wx.TE_READONLY)
        self.load_file_button = wx.Button(self.panel, -1, "Load Files")
        self.load_file_button.Bind(wx.EVT_BUTTON, self.SelectFileDialog)

        # Conversion type selection box and label
        self.choice_list_desc = wx.StaticText(self.panel, -1,
            "Select format to convert to: ")
        self.choice_list = wx.Choice(self.panel, -1,
            choices=valid_targets)
        self.choice_list.Bind(wx.EVT_CHOICE, 
            self.SelectFromChoice)

        # Convert button!
        self.go_button = wx.Button(self.panel, -1, "Convert!")
        self.go_button.Bind(wx.EVT_BUTTON, self.PerformConversion)

        # sizers!
        self.master_container = wx.GridBagSizer(4, 3)

        self.master_container.Add(self.intro_text, (0,0), (1,3), wx.EXPAND)

        self.master_container.Add(self.file_convert_text, (1,0), wx.DefaultSpan, wx.EXPAND | wx.ALIGN_RIGHT)
        self.master_container.Add(self.file_text_box, (1,1), wx.DefaultSpan, wx.EXPAND | wx.ALIGN_CENTER)
        self.master_container.Add(self.load_file_button, (1,2), wx.DefaultSpan, wx.EXPAND | wx.ALIGN_CENTER)

        self.master_container.Add(self.choice_list_desc, (2,0), wx.DefaultSpan, wx.EXPAND)
        self.master_container.Add(self.choice_list, (2,1), wx.DefaultSpan, wx.EXPAND)

        self.master_container.Add(self.go_button, (3,0), wx.DefaultSpan, wx.EXPAND)

        self.panel.SetSizerAndFit(self.master_container)
        self.Centre()
# callbacks removed for brevity.
class MyApp(wx.App):
    def OnInit(self):
        frame = MyMenu(None, -1, 'Python Bulk Image Converter')
        frame.Show(True)
        return True

if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()
classmymenu(wx.Frame):
定义初始化(自我、父项、id、标题):
超级(MyMenu,self)。\uuuuu init\uuuuuuu(父项、id、标题)
有效的_目标=[“jpg”、“gif”、“pcx”,
“msp”、“png”、“ppm”、“tiff”]
#便宜的图像转换器v.1
#要转换的文件:[]
#转换为:[.jpg]v
#[转换]
self.convert\u target=None
self.raw_文件=[]
self.panel=wx.panel(self,-1)
#所有元素都将按照
#它们从上到下、从左到右出现。
self.intro_text=wx.StaticText(self.panel,-1,“图像转换器v0.1”)
#加载文件按钮和绑定
self.file\u convert\u text=wx.StaticText(self.panel,-1,
“选择要转换的文件。”)
self.file\u text\u box=wx.TextCtrl(self.panel,-1,
“选择文件!”,style=wx.TE_只读)
self.load\u file\u button=wx.button(self.panel,-1,“加载文件”)
self.load\u file\u button.Bind(wx.EVT\u按钮,self.SelectFileDialog)
#转换类型选择框和标签
self.choice\u list\u desc=wx.StaticText(self.panel,-1,
“选择要转换为的格式:”)
self.choice_list=wx.choice(self.panel,-1,
选项=有效的\u目标)
self.choice\u list.Bind(wx.EVT\u choice,
self.SelectFromChoice)
#转换按钮!
self.go_button=wx.button(self.panel,-1,“Convert!”)
self.go_按钮.Bind(wx.EVT_按钮,self.PerformConversion)
#尺码!
self.master_container=wx.GridBagSizer(4,3)
self.master\u container.Add(self.intro\u text,(0,0)、(1,3),wx.EXPAND)
self.master_container.Add(self.file_convert_text,(1,0),wx.DefaultSpan,wx.EXPAND | wx.ALIGN_RIGHT)
self.master_container.Add(self.file_text_box,(1,1),wx.DefaultSpan,wx.EXPAND | wx.ALIGN_CENTER)
self.master_container.Add(self.load_file_按钮,(1,2),wx.DefaultSpan,wx.EXPAND | wx.ALIGN_CENTER)
self.master\u container.Add(self.choice\u list\u desc,(2,0),wx.DefaultSpan,wx.EXPAND)
self.master_container.Add(self.choice_list,(2,1),wx.DefaultSpan,wx.EXPAND)
self.master_container.Add(self.go_按钮,(3,0),wx.DefaultSpan,wx.EXPAND)
self.panel.setSizerAndIt(self.master_容器)
自我中心()
#为简洁起见,取消了回调。
类MyApp(wx.App):
def OnInit(自身):
frame=MyMenu(无,-1,“Python批量图像转换器”)
frame.Show(真)
返回真值
如果名称=“\uuuuu main\uuuuuuuu”:
app=MyApp(0)
app.MainLoop()

这在wxPython中有点令人困惑。就我个人而言,我觉得
Fit
setSizerandft
方法非常烦人,也没有什么用处。但是,因为这是您想要的,所以方法是更改代码中的以下行:

self.panel.SetSizerAndFit(self.master_container)
为此:

self.panel.SetSizer(self.master_container)
self.master_container.Fit(self)
下面是完整的代码(注意,我注释掉了所有事件绑定,因为这些方法在您的示例中不存在):

导入wx
类MyMenu(wx.Frame):
定义初始化(自我、父项、id、标题):
超级(MyMenu,self)。\uuuuu init\uuuuuuu(父项、id、标题)
有效的_目标=[“jpg”、“gif”、“pcx”,
“msp”、“png”、“ppm”、“tiff”]
#便宜的图像转换器v.1
#要转换的文件:[]
#转换为:[.jpg]v
#[转换]
self.convert\u target=None
self.raw_文件=[]
self.panel=wx.panel(self,-1)
#所有元素都将按照
#它们从上到下、从左到右出现。
self.intro_text=wx.StaticText(self.panel,-1,“图像转换器v0.1”)
#加载文件按钮和绑定
self.file\u convert\u text=wx.StaticText(self.panel,-1,
“选择要转换的文件。”)
self.file\u text\u box=wx.TextCtrl(self.panel,-1,
“选择文件!”,style=wx.TE_只读)
self.load\u file\u button=wx.button(self.panel,-1,“加载文件”)
#self.load\u file\u button.Bind(wx.EVT\u按钮,self.SelectFileDialog)
#转换类型选择框和标签
self.choice\u list\u desc=wx.StaticText(self.panel,-1,
“选择要转换为的格式:”)
self.choice_list=wx.choice(self.panel,-1,
选项=有效的\u目标)
#self.choice\u list.Bind(wx.EVT\u choice,
#self.SelectFromChoice)
#转换按钮!
self.go_button=wx.button(self.panel,-1,“Convert!”)
#self.go_按钮.Bind(wx.EVT_按钮,self.PerformConversion)
#尺码!
self.master_container=wx.GridBagSizer(4,3)
self.master\u container.Add(self.intro\u text,(0,0)、(1,3),wx.EXPAND)
self.master_container.Add(self.file_convert_text,(1,0),wx.DefaultSpan,wx.EXPAND | wx.ALIGN_RIGHT)
self.master_container.Add(self.file_text_box,(1,1),wx.DefaultSpan,wx.EXPAND | wx.ALIGN_CENTER)
self.master_container.Add(self.load_file_按钮,(1,2),wx.DefaultSpan,wx.EXPAND | wx.ALIGN_CENTER)
self.master\u container.Add(self.choice\u list\u desc,(2,0),wx.DefaultSpan,wx.EXPAND)
self.master_container.Add(self.choice_list,(2,1),wx.DefaultSp
import wx

class MyMenu(wx.Frame):

    def __init__(self, parent, id, title):
        super(MyMenu, self).__init__(parent, id, title)

        valid_targets = ["jpg", "gif", "pcx", 
            "msp", "png", "ppm", "tiff"]

        # Cheap Image Converter v .1
        # File to convert: [            ] <Select File>
        # Convert to: [.jpg]v 
        # [CONVERT]

        self.convert_target = None
        self.raw_file = []
        self.panel = wx.Panel(self, -1)

        # all elements will be declared in the order in which
        # they appear, top to bottom, left to right.
        self.intro_text = wx.StaticText(self.panel, -1, "Image Converter v 0.1")

        # Load files button and binding
        self.file_convert_text = wx.StaticText(self.panel, -1,
            "Select a file to convert.")
        self.file_text_box = wx.TextCtrl(self.panel, -1,
            "Select a file!", style=wx.TE_READONLY)
        self.load_file_button = wx.Button(self.panel, -1, "Load Files")
        #self.load_file_button.Bind(wx.EVT_BUTTON, self.SelectFileDialog)

        # Conversion type selection box and label
        self.choice_list_desc = wx.StaticText(self.panel, -1,
            "Select format to convert to: ")
        self.choice_list = wx.Choice(self.panel, -1,
            choices=valid_targets)
        #self.choice_list.Bind(wx.EVT_CHOICE, 
            #self.SelectFromChoice)

        # Convert button!
        self.go_button = wx.Button(self.panel, -1, "Convert!")
        #self.go_button.Bind(wx.EVT_BUTTON, self.PerformConversion)

        # sizers!
        self.master_container = wx.GridBagSizer(4, 3)

        self.master_container.Add(self.intro_text, (0,0), (1,3), wx.EXPAND)

        self.master_container.Add(self.file_convert_text, (1,0), wx.DefaultSpan, wx.EXPAND | wx.ALIGN_RIGHT)
        self.master_container.Add(self.file_text_box, (1,1), wx.DefaultSpan, wx.EXPAND | wx.ALIGN_CENTER)
        self.master_container.Add(self.load_file_button, (1,2), wx.DefaultSpan, wx.EXPAND | wx.ALIGN_CENTER)

        self.master_container.Add(self.choice_list_desc, (2,0), wx.DefaultSpan, wx.EXPAND)
        self.master_container.Add(self.choice_list, (2,1), wx.DefaultSpan, wx.EXPAND)

        self.master_container.Add(self.go_button, (3,0), wx.DefaultSpan, wx.EXPAND)

        self.panel.Layout()
        self.panel.SetSizer(self.master_container)
        self.master_container.Fit(self)

        self.Centre()

# callbacks removed for brevity.
class MyApp(wx.App):
    def OnInit(self):
        frame = MyMenu(None, -1, 'Python Bulk Image Converter')
        frame.Show(True)
        return True

if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()