python 编写gui界面有哪些

 我来答
育知同创教育
2017-11-11 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部

安装wxPython

下面是wxPython特别基础的使用方法,将以一个小程序为例来说明,它的功能是在一个文本框中输入文件名,点击open按钮,会在另一个文本框中显示其内容,可以进行修改,点击save可以保存修改。

wxPython的使用简介

创建应用程序对象:wx.App()

app=wx.App()
app.MainLoop()

窗口/框架:wx.Frame()

win=wx.Frame(None,title='example')
win.Show()

组件

  • 按钮:wx.Button()

  • 关键字label设置标签:
    btn=wx.Button(win,label='open')

    绑定事件:
    btn.Bind(wx.EVT_BUTTON,load)

  • 文本控件:wx.TextCtrl()

  • 关键字style有wx.TE_MULTILINE(垂直滚动条),wx.HSXROLL(水平滚动条):
    filename=wx.TextCtrl(win,style=wx.TE_MULTILINE|wx.HSXROLL)

    同时我们可以在读取或者写入其内容:
    filename.GetValue()    filename.SetValue('string')

    布局:使用尺寸器(sizer)

    wx.BoxSizer的原理是创建一个箱子一样的东西,只能横着或者竖着放组件,一个一个的加进去,除了基本大小外其余空间按比例分配。加完一行行的箱子后,创建一个竖着的箱子,将这些横着的箱子(也可以是其他组件)加进去。

    *背景组件:wx.Panel()

    以窗口为参数构建,所有的组件依附其上,在设置完尺寸器后,使用bkg.SetSizer(box)

  • 尺寸器的构建函数:wx.BoxSizer()

  • 有一个决定它是垂直还是水平的参数(wx.HORIZONTAL水平,wx.VERTICAL垂直),默认为水平。
    box=wx.BoxSizer(wx.VERTICAL)

  • Add方法

  • proportion参数决定这个组件在剩余空间中的分配比例,flag参数有wx.EXPAND(会确保组件会扩展到分配的空间里),wx.LEFT,wx.RIGHT,wx.TOP,wx.BOTTOM,wx.ALL(这五个决定边框参数会应用到那个边),border参数会确定边框的大小。

    完整版的源代码如下:

  • #coding=utf-8

  • import wx

  • #设置函数

  • def load(event):

  •  f=open(filename.GetValue(),'r')

  •  content.SetValue(f.read())

  •  f.close()

  • def save(event):

  •  f=open(filename.GetValue(),'w')

  •  f.write(content.GetValue())

  •  f.close()


  • app=wx.App()

  • win=wx.Frame(None,title='simple editor',size=(410,330))

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

  • content=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.ALL,border=5)

  • vbox.Add(content,proportion=1,flag=wx.EXPAND|wx.ALL,border=5)


  • bkg.SetSizer(vbox)

  • win.Show()

  • app.MainLoop()`


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式