1. 需要安装wxPython软件

2.  GUI(图形用户界面)代码的编写顺序

  

  备注:

     1. 加入面板和布局管理器,可以使得组件的位置和大小更加灵活

3. 示例: 

#encoding=utf-8
import wx

#open按钮的事件处理函数
def load(event):
    try:
        myFile  = open(filename.GetValue())
        contents.SetValue(myFile.read())
        dlg = wx.MessageDialog(None, message = "Open Success!", style = wx.OK)
        if dlg.ShowModal() == wx.ID_OK:
            dlg.Close(True)
        dlg.Destroy()
        myFile.close()
    except IOError, e:
        dlg = wx.MessageDialog(None, message = "File not Found!", style = wx.OK)
        if dlg.ShowModal() == wx.ID_OK:
            dlg.Close(True)
        dlg.Destroy()

#save按钮的事件处理函数
def save(event):
    myFile = open(filename.GetValue(), "w")
    myFile.write(contents.GetValue())
    myFile.close()

    #保存成功后添加提示框
    dlg = wx.MessageDialog(None, message = "Save Success!", style = wx.OK)
    if dlg.ShowModal() == wx.ID_OK:
        dlg.Close(True)
        dlg.Destroy()

#打开GUI应用
app = wx.App()

#打开一个窗口
win = wx.Frame(None, title = "Simple Editor")

#窗口中加入面板
pl = wx.Panel(win)

#将组件放置在面板上
loadButton = wx.Button(pl, label = "Load")
saveButton = wx.Button(pl, label = "Save")
filename = wx.TextCtrl(pl)
contents = wx.TextCtrl(pl, style = wx.TE_MULTILINE | wx.HSCROLL)

#按钮绑定事件处理函数
loadButton.Bind(wx.EVT_BUTTON, load)
saveButton.Bind(wx.EVT_BUTTON, save)

#设置布局管理器(设置组件的大小和位置)
#水平布局管理器
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.RIGHT | wx.BOTTOM, border = 5)

#设置面板的布局管理器
pl.SetSizer(vbox)

#显示窗口
win.Show()

#启动GUI应用
app.MainLoop()

  运行结果:

  

python_GUI的更多相关文章

  1. Windows下用python编写简单GUI程序的方法

    Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py #!C:\Python27\python.exe ...

随机推荐

  1. HTML5 语义元素(一)页面结构

    本篇主要介绍HTML5增加的语义元素中关于页面结构方面的,包含: <article>.<aside>.<figure>.<figcaption>.< ...

  2. 多线程条件通行工具——CyclicBarrier

    CyclicBarrier的作用是,线程进入等待后,需要达到一定数量的等待线程后,再一次性开放通行. CyclicBarrier(int, Runnable)构造方法,参数1为通行所需的线程数量,参数 ...

  3. Hibernate的数据删除,更改

    其他未给出代码,请参考上一篇.... 一.数据的删除 方法1.从“多”的一方进行数据的删除 books.hbm.xml文件不变: <many-to-one name="publishe ...

  4. C语言 ---- 基本数据类型和基本运算 iOS学习-----细碎知识点总结

    // 导入头文件(stdio.h),标准输入输出的头文件,#include <stdio.h> // 程序的入口int main(int argc, const char * argv[] ...

  5. #pragma pack(n)

    #pragma pack(n) 重要规则: 1,复杂类型中各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个类型的地址相同: 2,每个成员分别对齐,即每个成员按自己的方式对齐,并最小 ...

  6. 在Windows/Ubuntu下安装OpenGL环境(GLUT/freeglut)与跨平台编译(mingw/g++)

    GLUT/freeglut 是什么? OpenGL 和它们有什么关系? OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用.如果需要在程序里直接使用OpenGL, ...

  7. Swift与Objective-c 混编CocoaPods 引入第三方库遇到的问题 (一)

    最近Swift 这么火也想尝试着用一下.考虑到Swift 出来的时间也不长.还有就是就是苹果更新的过于平凡 暂时还是不要将现有项目都用swift开发. 先来看看我遇到的问题: 问题一.

  8. 7. Add a networking service

    Controller Node: 1. sudo vi /etc/nova/nova.conf [DEFAULT] ... network_api_class = nova.network.api.A ...

  9. 《Java数据结构与算法》笔记-CH5-链表-2单链表,增加根据关键字查找和删除

    /** * Link节点 有数据项和next指向下一个Link引用 */ class Link { private int iData;// 数据 private double dData;// 数据 ...

  10. 安装gitolite,并ssh公钥无密码登录

    安装gitolite,并ssh公钥无密码登录 gitolite是管理git版本库的一种方案,它将git版本库的管理信息放在了一个特殊git版本库里.gitolite与linux操作系统集成了,需要使用 ...