python使用wxpython开发简单记事本的方法
作者:Gavin_dinggengjia 发布时间:2022-05-15 18:06:12
标签:python,wxpython,记事本
本文实例讲述了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程序设计有所帮助。


猜你喜欢
- 函数介绍Socket对象方法:服务端:函数描述.bind()绑定地址关键字,AF_INET下以元组的形式表示地址。常用bind((host,
- 本文实例讲述了Python面向对象编程之继承与多态。分享给大家供大家参考,具体如下:Python 类的继承在OOP(Object Orien
- os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作。比如说:绝对路径,父目录…… 但是,o
- np.where共两种用法:第一种np.where(condition, x, y),即condition为条件,当满足条件输出为x,不满足
- 如下所示:' '.join(line.split())例如:'line dd',运行line.split()
- 一、整数python2中整形可以分为一般整形和长整形,但是在python3中,两者以及合二为一了,只有整形。python中的整形是具有无限精
- 一、Matplotlib 绘图在数据分析中,数据可视化也非常重要,通过直观的展示过程、结果数据,可以帮助我们清晰的理解数据,进而更好的进行分
- 本文实例讲述了python函数装饰器用法。分享给大家供大家参考。具体如下:装饰器经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、
- 公式如下:rand() * (y-x) + x咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随
- 1.字符串反转使用Python切片反转字符串:# Reversing a string using slicingmy_string = &
- 用python给自己做个练习系统刷题吧!实现效果实现代码选择题def xuanze(): global flag2
- 一、单个文件打包1.1 简单打包例如现在有一个main.py文件内容如下import osprint("hello world&q
- 新下载了mysql,口令为空,如何修改root口令:首先登陆mysqluse mysql;update user set password=
- 常用的python第三方库安装工具大概有三种:1、pip (分为cmd和conda)(推荐)2、easy_install &n
- 前言在写波段配准相关代码时经常需要用到tif影像的波段合成和分解,虽然可以用ENVI才处理,但是每次都要打开再设置一些参数有些麻烦,所以本着
- asp如何用Jmail的发送电子邮件?asp源码见下:<% Set mail1
- 写桌面程序或有些特殊操作的,经常需要访问剪切板。python有专用的模块,可以很方便简单的操作剪切板如下:#coding:utf-8impo
- 一. 引入话题MySQL是一款广泛使用的开源数据库管理系统,它具有高效、稳定、可靠等优点,并支持多种操作系统和编程语言。然而,在使用MySQ
- golang中,一般strcut包含 interface类型后,struct类型都需要实现 interface导出的接口,从而成为相应的 i
- 看一看自己写的类是否能符合这样的标准.要成为高手,我要走的路还很长.摘抄自《OOD 启示录》--Arthur J.Riel(1)所有数据都应