wxPython

作者: 皮皮木子 | 来源:发表于2019-03-18 14:40 被阅读0次

    Sample1,创建一个窗体控件:

    import wx    //导入wxPython库

    class Frame(wx.Frame): // 创建一个窗体类

                pass  //该窗体什么也不做

    class App(wx.App):  // 创建一个App类

                def OnInit(self): //初始化

                            self.frame = Frame(parent=None, title='Spare')  //初始化窗体标题“Spare”

                            self.frame.Show() //窗体显示

                            self.SetTopWindow(self.frame) //设置窗体属性

                            return True //返回

    if __name__ =='__main__':

                app = App() //实例化一个App

                app.MainLoop() //App无限循环

    空窗体

    Sample2,窗体添加一个背景图片

    import wx

    class Frame(wx.Frame): //定义Frame类

                def __init__(self, image,parent=None, id=-1,pos=wx.DefaultPosition, title='Hello, wxPython!'): //窗体标题“Hello wxPyhton!”

                            temp = image.ConvertToBitmap()

                            size = temp.GetWidth(), temp.GetHeight()

                            wx.Frame.__init__(self, parent, id, title, pos, size)

                            self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)

                            self.SetClientSize(size)

    class App(wx.App): //定义App类

                def OnInit(self): // 初始化App类

                            image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG) //加载图片

                            self.frame = Frame(image) //窗体

                            self.frame.Show() //窗体显示

                            self.SetTopWindow(self.frame)

                            return True

    def main(): // 定义main()函数

                app = App() // 实例化App()

                app.MainLoop() // App无限循环

    if __name__ =='__main__':

                main()  //运行main()函数

    带背景的窗体

    Sample3,菜单和状态栏

    import wx

    class MyApp(wx.App): //定义MyApp()类

                def OnInit(self): //初始化

                            frame = MyFrame("Hello World", (50, 60), (450, 340)) //实例化MyFrame,标题“Hello World”

                            frame.Show() //窗体显示

                            self.SetTopWindow(frame)

                            return True

    class MyFrame(wx.Frame): //创建MyFrame类

                def __init__(self, title, pos, size): //初始化

                            wx.Frame.__init__(self, None, -1, title, pos, size)

                            menuFile = wx.Menu() //实例化Menu

                            menuFile.Append(1, "&About...") //添加“About”

                            menuFile.AppendSeparator() //添加分割线

                            menuFile.Append(2, "E&xit") //添加“Eexit”

                            menuBar = wx.MenuBar()// 添加菜单栏

                            menuBar.Append(menuFile, "&File")//添加“File”

                            self.SetMenuBar(menuBar)//设置菜单栏

                            self.CreateStatusBar()//创建状态栏

                            self.SetStatusText("Welcome to wxPython!")//设置状态栏信息

                            self.Bind(wx.EVT_MENU, self.OnAbout, id=1)//事件绑定

                            self.Bind(wx.EVT_MENU, self.OnQuit, id=2)//事件绑定

                def OnQuit(self, event):// 菜单“Quit”触发的事件

                            self.Close() 

                def OnAbout(self, event): //事件,菜单“About”触发的事件

                            wx.MessageBox("This is a wxPython Hello world sample", "About Hello World", wx.OK | wx.ICON_INFORMATION, self)

    if __name__ =='__main__':

                app = MyApp(False)  //实例化MyApp();

                app.MainLoop()

    带菜单的窗体


    Sample4,按钮

    import wx

    class TwoButtonEvent(wx.PyCommandEvent): //定义事件类TwoButtonEvent

                def __init__(self, evtType, id)://初始化

                            wx.PyCommandEvent.__init__(self, evtType, id)

                            self.clickCount =0 // 计数为“0”

                def GetClickCount(self): //定义函数GetClickCount(),返回计数值

                            return self.clickCount

                def SetClickCount(self, count): // 定义函数SetClickCount(),设定计数值

                            self.clickCount = count

    myEVT_TWO_BUTTON = wx.NewEventType() //事件

    EVT_TWO_BUTTON = wx.PyEventBinder(myEVT_TWO_BUTTON, 1) //事件绑定

    class TwoButtonPanel(wx.Panel): //定义按钮界面

                def __init__(self, parent, id=-1, leftText="Left", rightText="Right"): //初始化按钮名

                            wx.Panel.__init__(self, parent, id)

                            self.leftButton = wx.Button(self, label=leftText) //实例化左按钮

                            self.rightButton = wx.Button(self, label=rightText,pos=(100,0)) //实例化右按钮

                            self.leftClick =False

                            self.rightClick =False

                            self.clickCount =0

                            self.leftButton.Bind(wx.EVT_LEFT_DOWN, self.OnLeftClick)//按钮事件绑定

                            self.rightButton.Bind(wx.EVT_LEFT_DOWN, self.OnRightClick)//按钮事件绑定

                def OnLeftClick(self, event): //定义左键单击事件

                            self.leftClick =True

                            self.OnClick()

                            event.Skip()

                def OnRightClick(self, event): //定义右键单击事件

                            self.rightClick =True

                            self.OnClick()

                            event.Skip()

                def OnClick(self): //定义单击事件

                            self.clickCount +=1

                            if self.leftClickand self.rightClick:

                                        self.leftClick =False

                                        self.rightClick =False

                                        evt = TwoButtonEvent(myEVT_TWO_BUTTON, self.GetId())

                                        evt.SetClickCount(self.clickCount)

                                        self.GetEventHandler().ProcessEvent(evt)

    class CustomEventFrame(wx.Frame): //创建事件窗体CustomEventFrame()

                def __init__(self, parent, id): //初始化

                            wx.Frame.__init__(self, parent, id, 'Click Count: 0', size=(300, 100))

                            panel = TwoButtonPanel(self) //实例化 TwoButtonPanel()

                            self.Bind(EVT_TWO_BUTTON, self.OnTwoClick, panel) //事件绑定

                def OnTwoClick(self, event): //定义事件

                            self.SetTitle("Click Count: %s" % event.GetClickCount()) //标题显示计数

    if __name__ =='__main__':

                app = wx.PySimpleApp() //实例化wx.PySimpleApp()

                frame = CustomEventFrame(parent=None, id=-1) //实例化窗体CustomEventFrame

                frame.Show() //窗体显示

                app.MainLoop() 

    按钮窗体

    相关文章

      网友评论

          本文标题:wxPython

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