The First Pro with wxpython

本文根据《Python基础教程 第2版》Ch12内容,介绍了使用wxpython构建图形用户界面的初步实践。程序实现了向txt文件写入和读取内容的功能,并针对初学者常遇到的问题进行了讲解,如防止图形窗口闪现、处理中文写入及错误排查。通过改进原代码,解决了程序运行时可能出现的错误,提高了用户体验。
摘要由CSDN通过智能技术生成

参考书籍《Python基础教程 第2版》Ch12--图形用户界面

程序界面如下:


程序主要功能:向指定txt文件写入内容,读取所写入的内容。

PS:该程序无实用价值,仅作为研究wxpython首个案例!

代码如下:

#!/usr/bin/python
#coding:utf-8
#Date:2013-07-19
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

import wx
def load(event):
    filename = r'D:\wxtest.txt'
    file = open(filename)
    contents.SetValue(file.read())
    file.close()

def save(event):
    filename = r'D:\wxtest.txt'
    file = open(filename,'w')
    file.write(contents.GetValue())
    file.close()

app = wx.App(False)
win = wx.Frame(None,title="The first wx Pro By Bravelee",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()

==============================

相对于书中原代码,改善如下:

第一、解决程序排错过程中,图形窗口一闪而过的问题。

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

为了便于排错以及检查,确保图形窗口驻留屏幕,可以使用如下方式创建:

app=wx.App(False) 或者app=wx.App(redirect=False),重定向被关闭,所有输出都定向到标准输出,即控制台窗口。

第二、解决无法写入中文的问题。

在代码头部加入以下代码:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

第三、解决某个错误问题。

错误信息:Traceback (most recent call last):
  File "C:......\hope.py", line 3, in load
    file =open(filename.GetValue())
IOError: [Errno 22] invalid mode ('r') or filename: u''

错误原因:filename没有初始化!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值