如何在wxpython中向框架添加窗口

时间:2015-01-23 09:54:19

标签: python wxpython

如何在wxpython中打开框架内的窗口。 我想打开一个窗口,点击File-> SubFile。代码如下。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx
class MainMenu(wx.Frame):

def __init__(self, *args, **kwargs):
   # ID_F = 1
    super(MainMenu, self).__init__(*args, **kwargs) 
    self.Maximize(True)    

    self.InitUI()

def InitUI(self):
    #self.Bind(wx.EVT_MENU, self.OnAbout, None,id= 1)
    fileMenu1 = wx.Menu() 
    menubar = wx.MenuBar()
    fitem1 = fileMenu1.Append(1, '&Sub File\tCtrl+B', 'Sub File..')
    menubar.Append(fileMenu1,  '&File')
    self.SetMenuBar(menubar)
    self.SetTitle('Simple menu')
    self.Centre()
    self.Show(True)

def OnAbout(self, event):
     AboutFrame().Show()



class AboutFrame(wx.Frame):


def __init__(self):
     wx.Frame.__init__(self, parent, 5, 'New Window', size=(400,300))
     wx.Frame.CenterOnScreen(self)


def main():
    ex = wx.App()
    MainMenu(None)
    ex.MainLoop()    

if __name__ == '__main__':
    main()

我觉得这很简单。 如何将子窗口置于屏幕中心。 我对此非常陌生,

1 个答案:

答案 0 :(得分:0)

  

注意要响应菜单选择,请为EVT_MENU提供处理程序   [for]包含菜单的框架   http://wxpython.org/Phoenix/docs/html/MenuBar.html#menubar

...

  

wx.Frame方法:
  中心()
  http://wxpython.org/Phoenix/docs/html/Frame.html?highlight=frame#Frame.Centre

#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx
class MainMenu(wx.Frame):

    def __init__(self, *args, **kwargs):
        super(MainMenu, self).__init__(*args, **kwargs) 
        self.Maximize(True)    

        self.InitUI()

    def InitUI(self):
        fileMenu1 = wx.Menu() 
        menubar = wx.MenuBar()

        #********HERE************
        fitem1 = fileMenu1.Append(-1, '&Sub File\tCtrl+B', 'Sub File..')
        fitem2 = fileMenu1.Append(-1, '&Dog\tCtrl+D', 'Sub Dog..')

        self.Bind(wx.EVT_MENU, self.onclick_subfile, fitem1)
        #*************************

        menubar.Append(fileMenu1,  '&File')
        self.SetMenuBar(menubar)
        self.SetTitle('Simple menu')
        self.Centre()
        self.Show(True)

    def OnAbout(self, event):
         AboutFrame().Show()

    #**********HERE*************
    def onclick_subfile(self, event):
        frame = wx.Frame(None, -1, "My Second Frame")
        frame.Center()
        frame.Show()




class AboutFrame(wx.Frame):

    def __init__(self):
         wx.Frame.__init__(self, parent, 5, 'New Window', size=(400,300))
         wx.Frame.CenterOnScreen(self)


    def main():
        ex = wx.App(redirect=False)
        MainMenu(None)
        ex.MainLoop()    

    if __name__ == '__main__':
        main()

如果要在关闭外部窗口时销毁内部窗口,请将外部窗口作为内部窗口的父窗口:

    def onclick_subfile(self, event):
        frame = wx.Frame(self, -1, "My Second Frame")