Chinaunix首页 | 论坛 | 博客
  • 博客访问: 38132
  • 博文数量: 22
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 237
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-18 20:02
个人简介

人生最大的悲哀莫过于迷失自我而无法自拔!

文章分类

全部博文(22)

文章存档

2013年(11)

2012年(11)

我的朋友

分类: LINUX

2013-02-01 22:59:05

Python图形用户界面


1.一些支持Python的流行GUI工具包


Tkinter:使用Tk平台,很容易得到,半标准。
Introduction:



wxpython:基于wxWindows,跨平台越来越流行。




PyGTK:使用GTK平台,在Linux上很流行。



PyQt:使用Qt平台,跨平台。





2.窗口和组件:
窗口(windows)也称为框架(Frame),它只是wxFrame类的实例。wx框架中的部件都是由他们的
父部件作为构造函数的第一个参数创建的。如果正在创建一个单独的窗口,就不需要考虑父部件,
使用None即可。
在框架上增加按钮也很简单----只要使用win作为父参数实例化wx.Button即可。
import wx
app = wx.App()
win = wx.Frame(None)
#创建一个按钮
btn = wx.Button(win)
win.Show()
app.MainLoop()
标签、标题和位置:
可以在创建部件的时候使用构造函数的label参数设定他们的标签。同样,也可以用title参数
设定框架的标题。最实用的做法是为wx构造函数使用关键字参数,这样可以不用记住参数的顺序。
修正上述事例:
import wx
app = wx.App()
win = wx.Frame(None,title="Simple Editor",size=(410,335))
win.Show()
loadButton = wx.Button(win,label='Open',pos=(225,5),size=(80,25))
saveButton = wx.Button(win,label='Save',pos=(315,5),size=(80,25))
filename = wx.TextCtrl(win,pos=(5,5),size=(210,25))
contents = wx.TextCtrl(win,pos=(5,35),size=(390,260),style=wx.TE_MULTILINE | wx.HSCROLL)
app.MainLoop()


3.使用尺寸器进行布局管理:
import wx


app = wx.App()
win = wx.Frame(None,title="Simple Editor",size=(410,335))
bkg = wx.Panel(win)


loadButton = wx.Button(bkg,label='Open')
saveButton = wx.Button(bkg,label='Save')


filename = wx.TextCtrl(bkg)
contents = wx.TextCtrl(bkg,style=wx.TE_MULTILINE | wx.HSCROLL)


hbox = wx.BoxSizer()
hbox.Add(filename,proportion=1,flag=wx.EXPAND)
hbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5)
hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5)


vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)
vbox.Add(contents,proportion=1,flag=wx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border=5)


bkg.SetSizer(vbox)
win.Show()


app.MainLoop()


4.一个简单的关于event的例子
import wx
def load(event):
    file = open(filename.GetValue())
    contents.SetValue(file.read())
    file.close()
def save(event):
    file = open(filename.GetValue(),'w')
    file.write(contents.GetValue())
    file.close()
    


app = wx.App()
win = wx.Frame(None,title="Simple Editor",size=(410,335))
bkg = wx.Panel(win)


loadButton = wx.Button(bkg,label='Open')
loadButton.Bind(wx.EVT_BUTTON,load)


saveButton = wx.Button(bkg,label='Save')
saveButton.Bind(wx.EVT_BUTTON,save)


filename = wx.TextCtrl(bkg)
contents = wx.TextCtrl(bkg,style=wx.TE_MULTILINE | wx.HSCROLL)


hbox = wx.BoxSizer()
hbox.Add(filename,proportion=1,flag=wx.EXPAND)
hbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5)
hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5)


vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)
vbox.Add(contents,proportion=1,flag=wx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border=5)


bkg.SetSizer(vbox)
win.Show()


app.MainLoop()


阅读(940) | 评论(0) | 转发(0) |
0

上一篇:python程序打包

下一篇:SWIG

给主人留下些什么吧!~~