python使用wxpython开发简单记事本的方法
作者:Gavin_dinggengjia 时间:2022-05-15 18:06:12
本文实例讲述了python使用wxpython开发简单记事本的方法。分享给大家供大家参考。具体分析如下:
wxPython是Python编程语言的一个GUI工具箱。他使得Python程序员能够轻松的创建具有健壮、功能强大的图形用户界面的程序。它是Python语言对流行的wxWidgets跨平台GUI工具库的绑定。而wxWidgets是用C++语言写成的。
和Python语言与wxWidgetsGUI工具库一样,wxPython是开源软件。这意味着任何人都可以免费地使用它并且可以查看和修改它的源代码,或者贡献补丁,增加功能。
wxPython是跨平台的。这意味着同一个程序可以不经修改地在多种平台上运行。现今支持的平台有:32位微软Windows操作系统、大多数Unix或类Unix系统、苹果MacOS X。
下面使用wxpython编写一个简单的记事本程序,可以打开本地文件,编辑,保存。
#!/usr/bin/python
import wx
def OnOpen(event):
"""
Load a file into the textField.
"""
dialog = wx.FileDialog(None,'Notepad',style = wx.OPEN)
if dialog.ShowModal() == wx.ID_OK:
filename.SetValue(dialog.GetPath())
file = open(dialog.GetPath())
contents.SetValue(file.read())
file.close()
dialog.Destroy()
def OnSave(event):
"""
Save text into the orignal file.
"""
if filename.GetValue() == '':
dialog = wx.FileDialog(None,'Notepad',style = wx.SAVE)
if dialog.ShowModal() == wx.ID_OK:
filename.SetValue(dialog.GetPath())
file = open(dialog.GetPath(), 'w')
file.write(contents.GetValue())
file.close()
dialog.Destory()
else:
file = open(filename.GetValue(), 'w')
file.write(contents.GetValue())
file.close()
app = wx.App()
win = wx.Frame(None, title="Simple Editor", size=(600,400))
bkg = wx.Panel(win)
# Define a 'load' button and its label,
# bind to an button event with a function 'load'
loadButton = wx.Button(bkg, label='Open')
loadButton.Bind(wx.EVT_BUTTON, OnOpen)
# Define a 'save' button and its label,
# bind to an button event with a function 'save'
saveButton = wx.Button(bkg, label='Save')
saveButton.Bind(wx.EVT_BUTTON, OnSave)
# Define a textBox for filename.
filename = wx.TextCtrl(bkg)
# Define a textBox for file contents.
contents = wx.TextCtrl(bkg, style=wx.TE_MULTILINE | wx.HSCROLL)
# Use sizer to set relative position of the components.
# Horizontal layout
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)
# Vertical layout
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()
运行效果如下图所示:
这个例子是《Python基础教程》中的一个例子,并做了一些修改。虽然完成了基本的记事本功能,但是界面略显简单,而且代码也没有很好地遵循面向对象编程原则。
希望本文所述对大家的Python程序设计有所帮助。
标签:python,wxpython,记事本
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
很酷的JQuery Solar System
2007-12-15 08:09:00
![](https://img.aspxhome.com/file/UploadPic/200712/15/200712158138849s.png)
致Python初学者 Anaconda入门使用指南完整版
2021-09-08 04:48:36
python模块简介之有序字典(OrderedDict)
2023-12-14 07:46:46
asp实现本周的一周时间列表的代码
2011-04-06 10:45:00
高性能PHP框架Symfony2经典入门教程
2023-11-16 02:39:23
设计评论表单[译]
2009-03-25 20:41:00
![](https://img.aspxhome.com/file/UploadPic/20093/25/contact_form-95s.png)
Dreamweaver使用快技法十三则
2009-07-21 12:45:00
详解Numpy扩充矩阵维度(np.expand_dims, np.newaxis)和删除维度(np.squeeze)的方法
2023-02-13 22:24:24
Python实现多线程下载文件的代码实例
2022-11-06 02:41:12
关于opencv读取和写入路径有汉字的处理方式
2021-10-25 18:00:09
![](https://img.aspxhome.com/file/2023/6/80496_0s.jpg)
Python趣味实例,实现一个简单的抽奖刮刮卡
2023-07-20 18:59:41
![](https://img.aspxhome.com/file/2023/1/71401_0s.jpg)
用 JS 来控制 target 链接属性
2007-10-08 12:59:00
如何前后翻阅聊友们的发言?
2010-01-18 20:49:00
Bowman vs Google-设计与数据彼此相互需要
2009-08-16 16:06:00
使用Python实现一个栈判断括号是否平衡
2022-01-04 02:20:29
PHP count_chars()函数讲解
2023-06-05 09:17:25
![](https://img.aspxhome.com/file/2023/2/55392_0s.png)
python 集合常用操作汇总
2023-11-15 08:41:22
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2023-09-05 06:07:44
![](https://img.aspxhome.com/file/2023/2/55632_0s.jpg)
Oracle存储过程基本语法介绍
2023-06-27 14:00:26
纯CSS制作的网页中的lightbox效果
2007-11-06 18:59:00