触发其他控件的事件
panel=self.GetChildren()[0]
for each in panel.GetChildren():
if each.GetLabel() == "mybutton":
finder=each
break
event=wx.CommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED,
finder.GetId())
finder.GetEventHandler().ProcessEvent(event)
添加菜单栏
def menuData(self): return [("&File", (("&New", "New FIle", self.OnNew),("&Close", "Close FIle", self.OnClose)) ), ("&Option", (("&Set", "Set Help", self.OnNew),("&Add", "Add Help", self.OnClose)) ) ] def createMenuBar(self): menuBar = wx.MenuBar() for eachMenuData in self.menuData(): menuLabel = eachMenuData[0] menuItems = eachMenuData[1] menuBar.Append(self.createMenu(menuItems), menuLabel) self.SetMenuBar(menuBar) def createMenu(self, menuData): menu = wx.Menu() for eachItem in menuData: if len(eachItem) == 2: label = eachItem[0] subMenu = self.createMenu(eachItem[1]) menu.AppendMenu(wx.NewId(), label, subMenu) else: self.createMenuItem(menu,*eachItem) return menu def createMenuItem(self,menu,label,status,handler, kind=wx.ITEM_NORMAL): if not label: menu.AppendSeparator() return menuItem=menu.Append(-1,label,status,kind) self.Bind(wx.EVT_MENU, handler, menuItem) def OnNew(self,event): wx.MessageBox("OnNew") def OnClose(self,event): wx.MessageBox("OnClose")
制作程序启动界面
jpg=wx.Image("bk.jpg").ConvertToBitmap()
wx.SplashScreen(jpg,wx.SPLASH_CENTER_ON_SCREEN|wx.SPLASH_TIMEOUT,
2000,None,-1)
wx.Yield()
布局管理器
box布局
box=wx.BoxSizer(wx.HORIZONTAL)
box.Add(control1,1,wx.EXPAND)
box.Add(control2,2,wx.EXPAND)
self.SetSizer(box)
流式网格布局
sizer=wx.FlexGridSizer(cols=2,hgap=6,vgap=60)
sizer.AddMany([staticText,basicText,pwdLabel])
panel.SetSizer(sizer)
进度条
self.gauge=wx.Gauge(panel,-1,100,(0,0),(300,200))
self.gauge.SetBezelFace(3)
self.gauge.SetShadowWidth(3)
self.Bind(wx.EVT_IDLE, self.OnIdle)
运行wxpython自带的demo
把原有的
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
替换成
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,"TestFrame",size=(500,400))
panel=TestPanel(self,None)
if __name__ == '__main__':
app=wx.PySimpleApp()
frame=MyFrame()
frame.Show()
app.MainLoop()
根据sizer自动设置初始窗口大小
fgs=wx.FlexGridSizer(cols=2,hgap=10,vgap=10)
p=wx.Panel(self)
p.SetSizerAndFit(fgs)
self.Fit()
使用剪切板
text_data=wx.TextDataObject("hello")
if wx.TheClipboard.Open():
wx.TheClipboard.SetData(text_data)
wx.TheClipboard.Flush()
wx.TheClipboard.Close()