美文网首页玩味小白程序🐒
强智科技·教务网成绩爬取系列文章之wxpython·GUI简单设

强智科技·教务网成绩爬取系列文章之wxpython·GUI简单设

作者: 胜言_ | 来源:发表于2020-04-08 08:35 被阅读0次

    秋风萧瑟,提前祝大家七夕快乐!!!

    • GUIManager.py是GUI各个窗体切换和联动的中枢,代码实现比较简单,但是其背后的深意请自行领会。
    • Main.py是该GUI应用的主程序所在,也就是运行Main.py可以打开该应用程序。

    代码实现

    • GUImanager.py
    import frame
    
    class Manager():
    
        def __init__(self,UpdateUI):
            self.UpdateUI = UpdateUI
            self.frameDict = {} # 用来装载已经创建的Frame对象
    
        def GetFrame(self,number):
            frame = self.frameDict.get(number)
    
            if frame:
                pass
            else:
                frame = self.CreateFrame(number)
                self.frameDict[number] = frame
    
            return frame
    
        def CreateFrame(self,number):
            if number == 0:
                return frame.MainFrame(id=number, size=(1025, 620), UpdateUI=self.UpdateUI)
            elif number == 1:
                return frame.TipsFrame(id=number, size=(770,360), UpdateUI=self.UpdateUI)
                #* pos=(wx.DisplaySize()[0]/2, wx.DisplaySize()[1]/2
            elif number == 2:
                return frame.HelpFrame(id=number, size=(750, 400), UpdateUI=self.UpdateUI)
    
    • Main.py
    import wx
    
    from guimanager import Manager
    
    class MainApp(wx.App):
    
        def OnInit(self):
            self.guimanager = Manager(self.UpdateUI)
            self.frame = self.guimanager.GetFrame(number=0)
            self.frame.Show()
            self.SetTopWindow(self.frame)
            return True
    
        def UpdateUI(self,number):
            self.frame = self.guimanager.GetFrame(number)
            self.frame.Show(True)
    
    def main():
        app = MainApp()
        app.MainLoop()
    
    if __name__ == '__main__':
        main()
    

    代码解释

    这里GUImanager.py中创建了一个类Manager,它包含两个自建方法GetFrame(用于获取窗体Frame)、CreateFrame(用于将窗体Frame返回到App主循环中予以体现)。该类的初始化变量中,self.UpdateUI是其精华所在,它通过Main.py中MainApp类中的UpadateUI方法与Frame.py中的3个窗体MainFrameTipsFrameHelpFrame进行联动交流,当frame.py中某个窗体中触发某事件,而该事件又用来显示某个窗体时(即包含self.UpdateUI语句),则该语句触发MainApp类中的UpdateUI方法,该方法触发GUImanager中的GetFrame方法,进而继续触发CreateFrame方法,然后再返回到MainApp类的UpdateUI方法中(这个过程的实现语句对应Main.py中的self.frame = self.guimanager.GetFrame(number))。这个过程之后,调用self.frame.Show(Ture),该语句用于渲染self.Frame到屏幕上(wxpython中的方法)。

    相关文章

      网友评论

        本文标题:强智科技·教务网成绩爬取系列文章之wxpython·GUI简单设

        本文链接:https://www.haomeiwen.com/subject/uhpdphtx.html