python 基础教程系列12.GUI

来源:互联网 发布:数据网关介绍 编辑:程序博客网 时间:2024/06/07 18:03

一、平台
Tkinter, wxpython, pythonwin, Java Swing, pyGTK, pyQt

二、创建窗口和组件

import wx    app = wx.App()         #创建应用程序对象win = wx.Frame(None)   #创建窗体win.Show()             #显示窗体app.MainLoop()         #运行程序

三、增加按钮和按钮处理事件
1.wx.Button()添加按钮函数
2.利用部件的Bind()方法可以将事件处理函数链接到给定的事件上。~.Bind(按钮事件, 函数名)
loadButton.Bind(wx.EVT_BUTTON, load) #wx.EVT_BUTTON为按钮点击事件

四、窗体的标签/标题与布局
1.title/label pos,size
2.尺寸器:sizer wx.BoxSizer 尺寸器会管理组件的尺寸。只要将部件添加到尺寸器上,再加上一些布局参数,然后让尺寸去管理父组件的尺寸。需要增加背景组件(wx.Panel),创建一些嵌套的wx.BoxSizer,然后使用面板的SetSizer方法设定它的尺寸器。

#coding:utf-8#code:12-5import wxapp = 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 or wx.HSCROLL) #设置垂直和水平滚动条   MULTILINE多行hbox = wx.BoxSizer()  #添加尺寸器进行布局,默认参数为水平hbox.Add(filename, proportion = 1, flag = wx.EXPAND)  #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()

Add方法有几个参数,proportion参数根据在窗口改变大小时说分配的空间设置比例,可以将proportion设定为任何数;flag参数类似于构造函数中的style参数,wx.EXPAND 标记确保组件会扩展到所分配的空间中, wx.LEFT | wx.BOTTOM | wx.RIGHT|wx.Top|wx.ALL标记决定了边框参数应用于哪个边,边框参数 border 用于设置边缘宽度(间隔)

wx.TextCtrl()创建文本框。

五、code:12-6

#coding: utf-8import wxdef load(event):    file = open(filename.GetValue())  #获取文件名    contents.SetValue(file.read())    #contents.SetValue将文本引入文本区    file.close()def save(event):    file = open(filename.GetValue(), 'w')    file.write(contents.GetValue())    #GetValue用于从文本区获得信息    file.close()app = wx.App()win = wx.Frame(None, title = 'Sample Editor', size = (410, 335))bkg = wx.Panel(win)loadButton = wx.Button(bkg, label = 'Open')loadButton.Bind(wx.EVT_BUTTON, load)          #点击按钮,调用函数wx.EVT_BUTTON的符号常量表示一个按钮事件saveButton = wx.Button(bkg, label = 'Save')saveButton.Bind(wx.EVT_BUTTON, save)        filename = wx.TextCtrl(bkg)contents = wx.TextCtrl(bkg, style = wx.TE_MULTILINE or 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 or wx.ALL, border = 5)vbox.Add(contents, proportion = 1, flag = wx.EXPAND or wx.LEFT or wx.RIGHT or wx.BOTTOM, border = 5)bkg.SetSizer(vbox)win.Show()app.MainLoop()
原创粉丝点击