在 class 内更改 wx.Frame 大小

Change wx.Frame size inside class

我用 wxpython 创建了一个 wx.frame class。 我想更改 class 内的 frame's 大小,可以吗? 我知道在 init 时设置 frame's 大小,例如

class MyFrame(wx.Frame):
    def __init__(self):
        super(MyFrame,self).__init__(None, -1, title="demo", size=(width, height))
    def change_frame_size(self)

我想在 class 中创建一个函数,它可以将框架的大小更改为最大。有人知道吗?

SetSize方法可以用来改变window.

的大小
def change_frame_size(self, width, height):
    self.SetSize(wx.Size(width, height))

为了最大化 window,您有 Maximize 方法。

self.Maximize()

只需使用SetSize()
例如

import wx

class MyApp(wx.App):
    def OnInit(self):
        self.frame = MyFrame()
        self.SetTopWindow(self.frame)
        return True

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None, title="Window", pos = (100,150), size =(250,200))
        menu = wx.Menu()
        menu.Append(1,'&Resize Max')
        menu.AppendSeparator()
        menu.Append(2,'Resize &Min')
        menu.AppendSeparator()
        menu.Append(3,'E&xit')
        menuBar = wx.MenuBar()
        menuBar.Append(menu,'&File')
        self.Bind(wx.EVT_MENU, self.OnMax, id=1)
        self.Bind(wx.EVT_MENU, self.OnMin, id=2)
        self.Bind(wx.EVT_MENU, self.OnExit, id=3)
        self.SetMenuBar(menuBar)
        self.SetMaxSize((500,400))
        self.SetMinSize((250,200))
        self.Layout()
        self.Show()

    def OnExit(self, evt):
        self.Destroy()

    def OnMax(self, evt):
        self.SetSize(self.MaxSize)
        print("MyFrame resized bigger!")

    def OnMin(self, evt):
        self.SetSize(self.MinSize)
        print("MyFrame resized smaller!")

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