wxpython的使用

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()
    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()
        
        
        
        
        
        


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
wxPython是一个用于创建Python GUI应用程序的开源工具包。它是wxWidgets库的Python绑定,可以在各种操作系统上使用wxPython提供了丰富的GUI组件,包括窗口、按键、文本框、列表框、菜单等,可以帮助程序员快速开发界面友好、交互性强的应用程序。 使用wxPython创建应用程序需要按照以下步骤: 1. 导入wxPython库:在Python代码中,首先需要导入wx模块,以便使用wxPython库的功能。 2. 创建应用程序对象:使用wx.App()函数创建一个wxPython应用程序对象,它是整个应用程序的基础。 3. 创建顶级窗口:使用wx.Frame()函数创建一个顶级窗口对象,可以设置窗口的标题、大小和位置等属性。 4. 添加GUI组件:使用wxPython提供的各种组件函数,如wx.Button()、wx.TextCtrl()等,创建并添加到顶级窗口中。 5. 设置事件处理器:为每个组件添加事件处理器,当用户与组件交互时,会触发相应事件的处理函数。 6. 运行应用程序:调用应用程序对象的MainLoop()方法,开始运行应用程序,等待用户的交互并响应事件。 使用wxPython时,可以使用sizers来管理组件的布局,使界面更易于调整和管理。还可以使用wxPython提供的样式和主题来定制应用程序的外观和风格。 总之,wxPython是一个功能强大且易于使用的GUI工具包,它能够帮助Python程序员快速创建具有丰富用户界面的应用程序。通过深入学习和实践,可以更好地掌握wxPython使用技巧,从而实现更加复杂和专业的应用程序开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值