wxPython中文教程入门实例

2019-10-06 14:28:52刘景俊


def OnSave( self, event ): 
self.statusbar.SetStatusText( 'Save Command' ) 

def OnExit( self, event ): 
self.Close() 

class MyApp( wx.App ): 
def OnInit( self ): 
frame = MyToolBar( None, -1, ' toolbar.py' ) 
frame.Show( True ) 
return True 

app = MyApp( 0 ) 
app.MainLoop()

wx.BoxSizer 在后面的布局章节会解释到。工具栏构件通过三步创建。

首先,我们创建一个工具栏对象。
tollbar = wx.ToolBar( self, -1, style= wx.TB_HORIZONTAL | wx.NO_BORDER )

然后我们使用 AddSimpleTool() 方法为工具栏添加了几个工具。你在参考手册中找不到这个方法。它是一个 wxPython 扩展。这既是个诅语也是个祝福。它合 Python 编程变得容易。但另一方面,这些扩展没有被写入文档。你不得不通过浏览源代码、demo 或者在邮件列表中提问来了解它们。
toolbar.AddSimpleTool(1,wx.Image('stock_new.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(),'New','')

最后,我们调用 Realize() 方法。这个方法显示工具栏构件。
toolbar.Realize()

工具栏有好几个事件处理顺。当你点击工具栏上的图标时,就会产生一个wx.EVT_COMMAND_TOOL_CLICKED事件。我们把此事件绑定的某个具体的wx.EVT_TOOL处理器方法上。

为了显示相关的输出,我们创建了一个状态栏。
self.statusbar = self.CreateStatusBar()

这仍然是另外一个 wxPython 扩展。这样一旦我们点击工具栏按纽,状态栏就会显示相关信息。这是通过使用 SetStatusText() 方法达成的。

有两种基本的方法可以用来布置我们的构件。第一种是手工布置。我们通过在构造器中指定位置来摆放我们的构件。


#!/usr/bin/evn python 
import wx 
class MyFrame(wx.Frame): 
def __init__(self,parent,ID,title): 
wx.Frame.__init__(self,parent,ID,title,wx.DefaultPosition,wx.Size(250,50)) 
panel=wx.Panel(self,-1) 

wx.Button(panel,-1,'Button1',(0,0)) 
wx.Button(panel,-1,'Button2',(80,0)) 
wx.Button(panel,-1,'Button3',(160,0)) 

class MyApp(wx.App): 
def OnInit(self): 
frame=MyFrame(None,-1,'layout.py') 
frame.Show(True) 
frame.Centre() 

app = MyApp(0) 
app.MainLoop()

当窗口大小改变时,按纽的大小和位置并不改变。这是手工设置构件位置的一个主要特征。第二种方法是使用布局管理器。这是现实程序中比较流行的方法。基本上你要使用 sizer。我们将讨论:

* wx.BoxSizer
* wx.StaticBoxSizer
* wx.GridSizer
* wx.GridBagSizer

来写一个程序,它的窗口顶部的一行被三个按纽占据。这些按纽会随窗口的改变而改变。


#!/usr/bin/env python 
# FileName: wxboxsizer.py 
import wx