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()
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()
相关文章推荐
- wxPython安装使用
- Python实例之wxpython中Frame使用方法
- wxpython使用
- wxPython框架类和面板类的使用实例
- wxpython 中wxOGL的使用 第二篇
- wxPython使用系统剪切板的方法
- wxPython使用窗口
- [wxPython学习]使用PubSub机制来更新视图
- wxPython的使用1
- 使用wxPython的绘图模块wxPyPlot进行数据可视化
- Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
- 使用wxPython开发一个简单GUI应用
- wxpython 使用LayoutConstraints约束布局
- python之wxPython菜单使用详解
- 使用 wxFormBuiler 做wxPython UI
- 在wxPython中使用OpenGL
- Python使用wxPython实现计算器
- Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
- 【转】使用WxPython进行Win32下Python编程
- 9.2 使用标准对话框 [wxPython In Action]