wxPython实例一

效果:


代码:

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值