wxPython菜单栏,状态栏,弹窗,选择框(二)

1.菜单栏和状态栏的代码
2.弹窗的代码
3.选择框

# coding=utf-8

import wx
from wx.py import images


class Frame(wx.Frame):

    def __init__(self, *args, **kwargs):
        super().__init__(*args,**kwargs)
        panel = wx.Panel(self)  # 创建画板   

        panel.SetBackgroundColour("RED")

        # 创建状态栏
        self.CreateStatusBar()

        # 创建工具栏
        toolbar = self.CreateToolBar()# 2 创建工具栏
        toolbar.AddSimpleTool(wx.NewId(), wx.py.images.getPyBitmap(),"New", "Long  help for ’New’")  # 3 给工具栏增加一个工具
        toolbar.Realize()

        button = wx.Button(panel, label="Close", pos=(125, 10), size=(50, 50))
        # 绑定按钮的单击事件
        self.Bind(wx.EVT_BUTTON, self.OnCloseMe, button)
        # 绑定窗口的关闭事件
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)


        # 创建菜单栏
        menubar = wx.MenuBar()

        menu1 = wx.Menu()
        menu2 = wx.Menu()
        menu2.Append(wx.NewId(), "Copy", "Copy in")
        menu2.AppendSeparator()
        menu2.Append(wx.NewId(), "Options...", "Options in")

        menubar.Append(menu1, "&FILE")
        menubar.Append(menu2, "EDIT")
        self.SetMenuBar(menubar)

        # 显示对话框
        # dlg = wx.MessageDialog(None,"you are laowang",style=wx.OK|wx.CANCEL)
        # dlg.ShowModal()  # 意味着在对话框关闭之前,应用程序中的别的窗口不能响应用户事件
        # print(dlg.GetValue())
        # dlg.Destroy()
        dlg = wx.SingleChoiceDialog(None,"you are laowang","单选",choices=['1','2','3'],style=wx.OK|wx.CANCEL)
        dlg.ShowModal() # 意味着在对话框关闭之前,应用程序中的别的窗口不能响应用户事件
        print(dlg.GetStringSelection())
        dlg.Destroy()

    def OnCloseMe(self, event):
        print("点击close后")
        self.Close(True)


    def OnCloseWindow(self, event):
        print("点击X后")
        self.Destroy()

class MyApp(wx.App):
    def OnInit(self):
        self.frame = Frame(parent=None, title='Spare', pos=(600,500))
        self.frame.Show(True)
        self.SetTopWindow(self.frame)
        return True

    def fun(self):
        id = wx.NewId()

    def OnExit(self):
        return 1

if __name__ == '__main__':
    app = MyApp(False)
    app.MainLoop()
    print("over")

经过修改和封装后的按钮代码

import wx
import wx.grid

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        panel = wx.Panel(self)
        self.createButtonBar(panel, 20)

    def buttonData(self):
        return (("First", self.OnFirst),(" << PREV", self.OnPrev),("NEXT >> ", self.OnNext),("Last", self.OnLast))

    def createButtonBar(self, panel, yPos=0):
        xPos = 0
        for eachLabel, eachHandler in self.buttonData():
            pos = (xPos, yPos)
            button = self.buildOneButton(panel, eachLabel, eachHandler, pos)
            xPos += button.GetSize().width

    def buildOneButton(self, parent, label, handler, pos=(0, 0)):
        button = wx.Button(parent, -1, label, pos)
        self.Bind(wx.EVT_BUTTON, handler, button)
        return button

    def OnFirst(self):
        pass
    def OnPrev(self):
        pass
    def OnNext(self):
        pass
    def OnLast(self):
        pass

class MyApp(wx.App):
    def OnInit(self):
        self.frame = MyFrame(parent=None, title='Spare', pos=(600,500))
        self.frame.Show(True)
        self.SetTopWindow(self.frame)
        return True

    def fun(self):
        id = wx.NewId()

    # def OnExit(self):
    #     return 1

if __name__ == '__main__':
    app = MyApp(False)
    app.MainLoop()
    print("over")

备注:对于wxPython的MainLoop()简单理解
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43534980/article/details/115058614