您的位置:首页 > 编程语言 > Python开发

wxpython的使用

2013-03-24 23:18 274 查看
wxpython是python语言的一个gui的工具集

wxpython的开发环境

基本组件

高级控件

熟悉wxpython的程序结构

掌握wxpython的基本组件和常用组件

掌握wxpython库中的菜单,窗口与对许框控件

常握wxpython库中的表格控件

掌握wxpython库中的高级列表控件

掌握wxpython库中的树形控件

掌握wxpython库中定时器控件

下载和安装wxpython

下载页面:http://wxpython.org/download.php,下载与python同版本的wxpython

安装就是下一步下一步地安装

安装完了就可以用下列方法,检查是否安装完成了

import wx

print wx.version()

#2.9.4.0 msw (classic)

基础知识:

wxpython的开发工具

wxpython的开发工具很多

较常用的有3个,wxglade wxfrombuilder bobconstuter

wxglade 开发工具:是一个gui设计工具,其模型来源源gtk/gonme

wxpython的程序结构

为了能够加速wxpython下的界面开发,可以使用gui设计工具

利用这些工具可以用可视化方法来设计界面,从面减少编写代码的工作量

一个wxpython程序一般包含 两个对象,应用程序对象和父窗口

1,使用wx.app生成应用程序对象

#创建一个实列

import wx

print wx.version()

print wx.VERSION_STRING

#创建一个类,创品类

class MyFirstFrame(wx.Frame):

    #定义一个守护的

    def __init__(self,parent):

        wx.Frame.__init__(self,parent,-1,"Hello world",size=(300,300))

        panel=wx.Panel(self)

        sizer=wx.BoxSizer(wx.VERTICAL)

        panel.SetSizer(sizer)

        txt=wx.StaticText(panel,-1,"hello world")

        sizer.Add(txt,0,wx.TOP|wx.LEFT,100)

        self.Center()

if __name__ =="__main__":

    app=wx.App()

    frame=MyFirstFrame(None)

    frame.Show()

    app.MainLoop()

#使用wx.app继承子类的方式实现应用程序对象  

import wx

class MyFirstFrame(wx.Frame):

    #定义一个守护的

    def __init__(self,parent):

        wx.Frame.__init__(self,parent,-1,"Hello world",size=(300,300))

        panel=wx.Panel(self)

        sizer=wx.BoxSizer(wx.VERTICAL)

        panel.SetSizer(sizer)

        txt=wx.StaticText(panel,-1,"hello world")

        sizer.Add(txt,0,wx.TOP|wx.LEFT,100)

        self.Center()

class MyApp(wx.App):

    def OnInit(self):

        self.frame=MyFirstFrame(None)

        self.frame.Show()

        return True

    def OnExit(self):

        pass 

if __name__ == "__main__":

    app=MyApp()

    app.MainLoop()  

    

基础知识:

窗口也称为框架,它只是wx.Frame类的实例

wx.Frame类的构造函数如下

wx.Frame(window parent,int id .string title =empty)  

最简单的框架的产生

import wx

class MyFrame(wx.Frame):

    def __init__(self):

        wx.Frame.__init__(self,None)

        self.Show()

app=wx.PySimpleApp()

myframe=MyFrame()

app.MainLoop()

import wx

class MyFrame(wx.Frame):

    def __init__(self):

        wx.Frame.__init__(self,None,wx.NewId(),style=wx.FRAME_TOOL_WINDOW|wx.SYSTEM_MENU)

        self.Show()

class MyApp(wx.App):

    def OnInit(self):

        self.frame=MyFrame()

        frameId=self.frame.GetId()

        print frameId

        return True

app=MyApp()

app.MainLoop()

# -*- coding: cp936 -*-

'''

Created on 2013-3-24

@author: Administrator

'''

#实例描述

#当移动腾讯QQ客体靠近屏幕边缘时,qq窗体会自动隐藏

#如何实现这样的功能呢?

#当获取qq客体所在民间幕位置这后

import wx 

class MyFrame(wx.Frame):

    def __init__(self):

        wx.Frame.__init__(self,None,-1,"测试位置",pos=(500,500),size=(300,200))

        panel=wx.Panel(self,-1)

        panel.Bind(wx.EVT_MOTION,self.OnMove)

        wx.StaticText(panel,-1,"鼠标当前位置为:",pos=(10,12))

        self.postCtrl=wx.TextCtrl(panel,-1,"",pos=(120,10))

    def OnMove(self,event):

        pos=event.GetPosition()

        self.postCtrl.SetValue("%s %s "%(pos.x,pos.y))

if __name__ == "__main__":

    app=wx.PySimpleApp()

    frame=MyFrame()

    frame.Show()

    app.MainLoop()

    

    

    

#对话框的创建 

import wx 

class App(wx.App):

    def OnInit(self):

        dlg=wx.MessageDialog(None,"确定要退出程序吗?","程序退出提示",wx.YES_NO|wx.ICON_QUESTION)

        result=dlg.ShowModal()

        if result ==wx.ID_YES:

            print "you enter the yes button"

            dlg.Destroy()

        if result ==wx.ID_NO:

            print "you enter the no button"

        

        return True

    

if __name__ == "__main__":

    app=App()

    app.MainLoop()

    

#文本输入对话框

import wx

class App(wx.App):

    def OnInit(self):

        dlg=wx.TextEntryDialog(None,"你最喜欢的一种语言是什么","一个问题","python")

        if dlg.ShowModal()==wx.ID_OK:

            print dlg.GetValue()

        return True

if __name__ ==  "__main__":

    app=App()

    app.MainLoop()

选择文件对话框

import wx

import os

class App(wx.App):

    def OnInit(self):

        fileFilter="python source(*py|*"

        dlg=wx.FileDialog(None,"选择文件",os.getcwd(),"",fileFilter,wx.OPEN)

        dlg.ShowModal()

        dlg.Destroy()

        return True

if __name__ ==  "__main__":

    app=App()
    app.MainLoop()

import wx

import wx.py.images as images

class ToolbarFrame(wx.Frame):

    def __init__(self,parent,id):

        wx.Frame.__init__(self,parent,id,"工具栏",size=(500,300))

        panel=wx.Panel(self)

        panel.SetBackgroundColour("black")

        toolbar=self.CreateToolBar()

        toolbar.AddSimpleTool(wx.NewId(),images.getPyBitmap("PyCrust"),"New","Log help for new")

        toolbar.Realize()

if __name__ == "__main__":

    app=wx.PySimpleApp()

4000
    frame=ToolbarFrame(None,-1)

    frame.Show()

    app.MainLoop()

#状态栏

import wx 

class StatusbarFrame(wx.Frame):

    def __init__(self,parent,id):

        wx.Frame.__init__(self,parent,id,"状态",size=(500,200))

        panel=wx.Panel(self)

        panel.SetBackgroundColour("write")

        statusbar=self.CreateStatusBar()

        statusbar.SetStatusText("status information")

if __name__ == "__main__":

    app=wx.PySimpleApp()

    frame=StatusbarFrame(parent=None,id=-1)

    frame.Show()

    app.MainLoop()

# -*- coding: cp936 -*-

'''

Created on 2013-3-24

@author: Administrator

'''

#实例提供常用操作的快捷键按钮

#比如microsoft office world的工具栏提供了新建

#空白文档,如如当前是第几页等

#在程序开发中,工具栏显得成为重要,当单击出程序按钮时,系统

#会提示用户是否确定退出

#以防止用户误操作而导致一些不必要的麻烦

import wx

class ToolbarFrame(wx.Frame):

    def __init__(self,parent,id):

        wx.Frame.__init__(self,parent,id,'工具栏',size=(600,300))

        panel=wx.Panel(self)

        panel.SetBackgroundColour("white")

        toolbar=self.CreateStatusBar()

        toolbar.AddSimpleTool(wx.NewId(),wx.Image('get.jpg',wx.BITMAP_TYPE_JPEG).ConvertToBitmap(),"New")

        toolbar.AddSimpleTool(wx.NewId(),wx.Image('get(1).jpg',wx.BITMAP_TYPE_JPEG).ConvertToBitmap(),"New")

        toolbar.AddSimpleTool(wx.NewId(),wx.Image('get(2).jpg',wx.BITMAP_TYPE_JPEG).ConvertToBitmap(),"New")

        toolbar.SetToolBitmapSize(wx.Size(10,10))

        toolbar.Realize()

        statusbar=self.CreateStatusBar()

        statusbar.SetStatusText("版权所有:")

        self.Bind(wx.EVT_TOOL, self.OnExit, id=wx.ID_EXIT)

        self.Bind(wx.EVT_TOOL, self.OnDelete,id=wx.ID_DELETE)

    def OnExit(self,event):

        dlg=wx.MessageDialog(None,"make suer ","exot",wx.YES_NO|wx.ICON_QUESTION)

        result=dlg.ShowModal()

        if result==wx.ID_YES:

            self.Close()

        dlg.Destroy()

class MyDialog(wx.Dialog):

    def __init__(self,parent,id,title):

        wx.Dialog.__init__(self,parent,id,title,size=(200,200))

        self.panel=wx.Panel(self)

        self.okbtn=wx.Button(self,10,"sure",pos=(50,100),size=(80,30))

        self.Bind(wx.EVT_BUTTON, self.CloseDlg, self.okbtn)

        self.Show()

    def CloseDlg(self,event):

        self.Close()

    def OnDelete(self,event):

        dlg=wx.MessageDialog(None,"sure delete this date","delete " ,wx.YES_NO|wx.ICON_QUESTION)

        result=dlg.ShowModal()

        if result== wx.ID_YES:

            mydialog=MyDialog(paent=None,id=-1,title="delete")

        dlg.Destroy()

            

app=wx.PySimpleApp()

frame=ToolbarFrame(None,-1)

frame.Show()

app.MainLoop()

import wx

class StaticTextFrame(wx.Frame):

    def __init__(self):

        wx.Frame.__init__(self,None,-1,"static text example",size=(300,200))

        self.panel=wx.Panel(self,-1)

        text=wx.StaticText(self.panel,-1,"static text",(70,50),(200,90),wx.ALIGN_CENTER)

        font=wx.Font(14,wx.DEFAULT,wx.ITALIC,wx.NORMAL,True)

        text.SetFont(font)

        text.SetForegroundColour('red')

        text.SetBackgroundColour('yellow')

if __name__ == "__main__":

    app=wx.PySimpleApp()

    frame=StaticTextFrame()

    frame.Show()

    app.MainLoop()

        

        

        

        

        

        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: