wxPython安装与GUI

本文讲述了在遇到Python 32位与wxPython 64位不匹配导致的DLL错误后,如何解决版本问题并成功安装wxPython。在安装Python 2.7后,通过代码实现了动态布局的GUI界面,包括按钮事件处理,如文件的保存和打开功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先是安装位的问题,Python安装的是32位,但是wxPython安装的是64位

然后出现了“python ImportError: DLL load failed: %1 不是有效的 Win32 应用程序”这个问题


2.版本问题,下载wxPython的网站只有针对Python2.7和Python2.6的,而我安装的是Python3.4的,于是又重新安装的一个Python2.7的,现在是可以了


3.第一个界面的显示

输入如下代码,显示了一个简单的界面

import wx
app=wx.App()
win=wx.Frame(None)
win.Show()
app.MainLoop()

然后添加控件,如下,位置是通过固定的点设定的,为绝对布局

import wx
app=wx.App()
win=wx.Frame(None,title="Simple Editor")
loadButton=wx.Button(win,label='Open',pos=(255,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)
win.Show()
app.MainLoop()


更智能的布局,会随着视图的大小而改变

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



设置按钮事件:

在filename上输入文件名如a.txt,在contents上输入内容,点击save;

关闭窗口,在filename上输入文件名a.txt,点击open,contents上会显示之前保存的内容

import wx
#先获取filename的文件,读取其中的值到contents上
def load(event):
    file=open(filename.GetValue())
    contents.SetValue(file.read())
    file.close()
#获取filename上的文件,以写的方式,将contents上的内容写到文件中
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)#获取窗口的背景,面板

#Button的事件处理函数
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的组合控件
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)

#使用尺寸器,将hbox放到vbox中,完成vobx的组合控件
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)

#使用面板的SetSizer方法设定它的尺寸器
bkg.SetSizer(vbox)

win.Show()

app.MainLoop()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值