我用wxPython搭建GUI量化系统之最小架构的运行

wxPython是基于Python的跨平台GUI扩展库,对wxWidgets( C++ 编写)封装实现。

wxPython程序由组件wx.App、wx.Frame、wx.Panel以及其他widget控件/窗体(如wx.ComboBox, wx.Button)组成。

一个wxPython程序只有一个wx.App创建的实例用于执行事件循环,至少一个Frame对象作为控件的容器,调用Show()方法使其显示,Frame中至少有一个Panel用来控制布局的窗口,而其他的控件建立在Panel之上。

在App类中未定义__init__()方法,但在Python中实例化一个对象时父方法wx.App.__init()将被自动调用,如果定义了__init()方法,需要手动调用基类的__init()__方法,如Frame类和Panel类中的实现(创建Frame类、Panel类可更灵活地设计我们所需要的GUI)。

OnInit()是wxPython所特有的一个方法,在应用程序创建后到事件循环开始前被wx.App父类调用,需返回一个True的布尔值。

SetTopWindow()方法设置当前Frame为应用程序的顶级窗口,该方法继承自wx.App父类。

应用程序一旦进入主事件循环,控制权将转交给wxPython,程序响应用户的鼠标和键盘事件。当应用程序的所有Frame关闭后app.MainLoop()方法结束并退出程序。

class Panel(wx.Panel):  
    def __init__(self,parent):  
        wx.Panel.__init__(self,parent=parent, id=-1)  
        pass    

class Frame(wx.Frame):   
    def __init__(self):   
        wx.Frame.__init__(self, parent = None, title = u'量化软件', size=(1000,600),   
                      style=wx.DEFAULT_FRAME_STYLE^wx.MAXIMIZE_BOX)   
        self.MPL = Panel(self)
        pass    
        
class App(wx.App):
    def OnInit(self):
        self.frame = Frame()  
        self.frame.Show()
self.SetTopWindow(self.frame)
        return True
    
if __name__ == '__main__':   
    app = App()
    app.MainLoop() 

作者简介:

1-畅销书《Python股票量化交易从入门到实践》作者
在这里插入图片描述
2-日常运营公众号《元宵大师带你用Python量化交易》

3-CSDN视频课程《Python金融数据分析入门到实战》讲师

你可能感兴趣的:(我用wxPython搭建GUI量化系统之最小架构的运行)