效果:
代码:
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'My Frame', size=(300, 300))
panel = wx.Panel(self, -1)
panel.Bind(wx.EVT_MOTION, self.OnMove)
wx.StaticText(panel, -1, 'Pos:', pos=(10, 12))
self.posCtrl = wx.TextCtrl(panel, -1, '', pos=(40, 10))
def OnMove(self, event):
pos = event.GetPosition()
self.posCtrl.SetValue('%s, %s' % (pos.x, pos.y))
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show(True)
app.MainLoop()
效果:
代码:
# -*- coding: utf-8 -*-
import wx #导入必须的wxPython包
class App(wx.App): #子类化wxPython应用程序类
def OnInit(self): #定义一个应用程序的初始化方法,将被wx.App父类调用。
#定义了一个没有父亲的框架,它是一个顶级的框架
frame = wx.Frame(parent=None, title='Bare')
#给Show方法一个布尔值参数来设定frame的可见性,默认True
frame.Show()
return True
app = App() #创建一个应用程序类的实例
app.MainLoop() #进入这个应用程序的主事件循环
效果:
代码:
# -*- coding: utf-8 -*-
import wx
class Frame(wx.Frame): #wx.Frame的子类
def __init__(self, image, parent=None, id=-1,
pos=wx.DefaultPosition,
title='Hello, wxPython!'):
temp = image.ConvertToBitmap()
size = temp.GetWidth(), temp.GetHeight() #用图像的宽度和高度创建一个size元组
wx.Frame.__init__(self, parent, id, title, pos, size)
#用wx.StaticBitmap控件来显示这个图像,它要求一个位图
self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)
class App(wx.App): #wx.App的子类,这是wxPython应用程序最基本的要求
def OnInit(self): #定义一个应用程序的初始化方法,将被wx.App父类调用。
image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG)
self.frame = Frame(image)
#给Show方法一个布尔值参数来设定frame的可见性,默认True
self.frame.Show()
#一个wxPython程序可以有几个框架,其中有一个是被设计为应用程序的顶级窗口的
self.SetTopWindow(self.frame)
#如果所返回的值是False,则应用程序将立即退出
return True
if __name__ == '__main__':
app = App() #创建一个应用程序类的实例
app.MainLoop() #进入这个应用程序的主事件循环
应用程序对象的生命周期
效果:
代码:
# -*- coding: utf-8 -*-
import wx
import sys
class Frame(wx.Frame):
def __init__(self, parent, id, title):
print 'Frame __init__'
wx.Frame.__init__(self, parent, id, title)
class App(wx.App):
def __init__(self, redirect=True, filename=None):
print 'App __init__'
wx.App.__init__(self, redirect, filename)
def OnInit(self):
print 'OnInit' #输出到stdout
self.frame = Frame(parent=None, id=-1, title='Startup') #创建框架
self.frame.Show()
self.SetTopWindow(self.frame)
print >> sys.stderr, 'A pretend error message' #输出到stderr
return True
def OnExit(self):
print 'OnExit'
if __name__ == '__main__':
#标准输出流sys.stdout和标准错误流sys.stderr是否重定向
#输出到控制台
#app = App(redirect=False)
#输出到filename所指定的文件中
#app = App(redirect=True, filename='output')
#应用程序创建了一个空的框架和生成了一个用于重定向输出的框架
app = App(redirect=True)
print 'before MainLoop'
app.MainLoop() #2 进入主事件循环
print 'after MainLoop'
效果:
代码:
# -*- coding: utf-8 -*-
import wx
import wx.py.images as images
class ToolbarFrame(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, 'Toolbars', size=(500, 400))
self.panel = wx.Panel(self)
self.panel.SetBackgroundColour('White')
self.statusBar = self.CreateStatusBar() #创建状态栏
self.toolbar = self.CreateToolBar() #创建工具栏
self.toolbar.AddSimpleTool(wx.NewId(), images.getPyBitmap(), 'New', 'Long help for "New"') #给工具栏增加一个工具
self.toolbar.Realize() #准备显示工具栏
self.menuBar = wx.MenuBar() #创建菜单栏
# 创建两个菜单
menu1 = wx.Menu()
self.menuBar.Append(menu1, '&File')
menu2 = wx.Menu()
#创建菜单的项目
menu2.Append(wx.NewId(), '&Copy', 'Copy in status bar')
menu2.Append(wx.NewId(), 'C&ut', '')
menu2.Append(wx.NewId(), 'Paste', '')
menu2.AppendSeparator()
menu2.Append(wx.NewId(), '&Options...', 'Display Options')
self.menuBar.Append(menu2, '&Edit') # 在菜单栏上附上菜单
self.SetMenuBar(self.menuBar) #在框架上附上菜单栏
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = ToolbarFrame(parent=None, id=-1)
frame.Show()
app.MainLoop()
效果:
代码:
# -*- coding: utf-8 -*-
import wx
if __name__ == '__main__':
app = wx.PySimpleApp()
dialog = wx.MessageDialog(None, 'Is this the coolest thing ever!',
'MessageDialog', wx.OK | wx.ICON_QUESTION | wx.CANCEL)
#将对话框以模式框架的方式显示,这意味着在对话框关闭之前,
#应用程序中的别的窗口不能响应用户事件.对于wx.MessageDialog,返回值
#是下面常量之一: wx.ID_YES, wx.ID_NO, wx.ID_CANCEL, wx.ID_OK
result = dialog.ShowModal()
dialog.Destroy()
app.MainLoop()
效果:
代码:
# -*- coding: utf-8 -*-
import wx
if __name__ == '__main__':
app = wx.PySimpleApp()
dlg = wx.TextEntryDialog(None, "Who is buried in Grant's tomb?", 'A Question', 'Cary Grant')
if dlg.ShowModal() == wx.ID_OK:
response = dlg.GetValue()
print response
效果:
# -*- coding: utf-8 -*-
import wx
if __name__ == '__main__':
app = wx.PySimpleApp()
dlg = wx.SingleChoiceDialog(None, 'What version of Python are you using?',
'Single Choice', ['1.5.2', '2.0', '2.1.3', '2.2', '2.3.1'])
if dlg.ShowModal() == wx.ID_OK:
index = dlg.GetSelection()#返回用户选项的索引
response = dlg.GetStringSelection()#返回实际所选的字符串
print index, ': ', response