在WxPython中设置帧大小?

时间:2014-06-18 15:57:58

标签: python wxpython

我对此非常陌生,所以如果这显而易见,我道歉。我正在使用示例代码(它正常运行):

class MainWindow(wx.Frame):
          def __init__(self, parent, title):
          self.dirname=''


          # A "-1" in the size parameter instructs wxWidgets to use the default size.
          # In this case, we select 200px width and the default height.
          wx.Frame.__init__(self, parent, title=title, size=(1000,1000))
          self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
          self.CreateStatusBar() # A Statusbar in the bottom of the window

          # Setting up the menu.
          filemenu= wx.Menu()
          menuOpen = filemenu.Append(wx.ID_OPEN, "&Open"," Open a file to edit")
          menuAbout= filemenu.Append(wx.ID_ABOUT, "&About"," Information about this program")
          menuExit = filemenu.Append(wx.ID_EXIT,"E&xit"," Terminate the program")

          # Creating the menubar.
          menuBar = wx.MenuBar()
          menuBar.Append(filemenu,"&File") # Adding the "filemenu" to the MenuBar
          self.SetMenuBar(menuBar)  # Adding the MenuBar to the Frame content.

          # Events.
          self.Bind(wx.EVT_MENU, self.OnOpen, menuOpen)
          self.Bind(wx.EVT_MENU, self.OnExit, menuExit)
          self.Bind(wx.EVT_MENU, self.OnAbout, menuAbout)

          self.sizer2 = wx.BoxSizer(wx.HORIZONTAL)
          self.buttons = []
          for i in range(0, 6):
              self.buttons.append(wx.Button(self, -1, "Button &"+str(i)))
              self.sizer2.Add(self.buttons[i], 1, wx.EXPAND)

          # Use some sizers to see layout options
          self.sizer = wx.BoxSizer(wx.VERTICAL)
          self.sizer.Add(self.control, 1, wx.EXPAND)
          self.sizer.Add(self.sizer2, 0, wx.EXPAND)

          #Layout sizers
          self.SetSizer(self.sizer)
          self.SetAutoLayout(1)
          self.sizer.Fit(self)
          self.Show()

我认为这就像更改wx.Frame中的“size =”值一样简单。 init 但是当我改变时没有任何反应。如何改变窗口大小?

此外,我如何告诉窗口屏幕上的哪个位置要打开? 谢谢

2 个答案:

答案 0 :(得分:1)

我认为大小调整器正在改变窗口的大小 - 毕竟它们是什么。在

之后注释掉所有代码
self.sizer2 = wx.BoxSizer(wx.HORIZONTAL)

并查看是否可以通过init方法更改窗口大小。

答案 1 :(得分:1)

问题实际上是你正在调用 self.sizer.Fit Fit method告诉wxPython使小部件适合尽可能小的空间,同时仍然显示所有小部件。我很少使用这种方法,因为它并不总能达到我的预期。您只需注释掉该行,然后将大小设置为您想要的任何内容。

要设置框架的位置,您需要调用SetPosition并将其传递给屏幕坐标元组。确保在显示框架之前调用SetPosition,因为如果框架出现在一个位置然后传送到新框架,它将看起来很奇怪。