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()简单理解