1 import wx2 app = wx.App(False)3 frame = wx.Frame(None, wx.ID_ANY, "Hollo World")4 frame.Show(True)5 app.MainLoop()
2是创造一个wx.App实例。参数是“False”的意思是不将stdout和stderr重定向到一个窗口,这个参数是“True”对这个例子没有影响。
3创建一个顶级窗口,语法为x.Frame(parent,ID,标题)。这个例子中wx.ID_ANY wxWidgets为我们挑选一个id。
4显示窗口
5主循环,处理事件
import wxclass my_frame(wx.Frame): """We simple derive a new class of Frame""" def __init__(self,parent, title): wx.Frame.__init__(self, parent, title=title,size=(300,100)) self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE) self.Show(True)app = wx.App(False)frame = my_frame (None,'Small edior')app.MainLoop()
继承来自wx.Frame的__init__方法。声明一个wx.TextCtrl控件
(简单的文本编辑控件)
import wxclass my_frame(wx.Frame): """We simple derive a new class of Frame""" def __init__(self,parent, title): wx.Frame.__init__(self, parent, title=title,size=(300,200)) self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE,) self.Show(True) self.CreateStatusBar()#创建窗口底部的状态栏 filemenu = wx.Menu() filemenu.Append(wx.ID_EXIT, "Exit", "Termanate the program") filemenu.AppendSeparator() filemenu.Append(wx.ID_ABOUT, "About", "Information about this program")#设置菜单的内容 menuBar = wx.MenuBar() menuBar.Append(filemenu, u"设置") self.SetMenuBar(menuBar)#创建菜单条 self.Show(True)app = wx.App(False)frame = my_frame(None, 'Small edior')app.MainLoop()
wx.ID_ABOUT和wx.id_EXIT这是标准wxWidgets提供的id,这样做的好处是可以保证兼容性,多个平台可以运行
import wxclass my_frame(wx.Frame): """We simple derive a new class of Frame""" def __init__(self,parent, title): wx.Frame.__init__(self, parent, title=title,size=(300,200)) self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE,) self.Show(True) self.CreateStatusBar()#创建窗口底部的状态栏 filemenu = wx.Menu() menu_exit = filemenu.Append(wx.ID_EXIT, "Exit", "Termanate the program") filemenu.AppendSeparator() menu_about = filemenu.Append(wx.ID_ABOUT, "About", "Information about this program")#设置菜单的内容 menuBar = wx.MenuBar() menuBar.Append(filemenu, u"设置") self.SetMenuBar(menuBar)#创建菜单条 self.Show(True) self.Bind(wx.EVT_MENU, self.on_about, menu_about) self.Bind(wx.EVT_MENU, self.on_exit, menu_exit)#把出现的事件,同需要处理的函数连接起来 def on_about(self,e):#about按钮的处理函数 dlg = wx.MessageDialog(self,"A samll text editor", "About sample Editor",wx.OK)#创建一个对话框,有一个ok的按钮 dlg.ShowModal()#显示对话框 dlg.Destroy()#完成后,销毁它。 def on_exit(self,e): self.Close(True)app = wx.App(False)frame = my_frame(None, 'Small edior')app.MainLoop()
第一步是设定事件,然后设定事件出现后应该执行什么操作,最后把事件和操作连接起来。
def on_open(self,e): """open a file""" self.dirname = '' dlg = wx.FileDialog(self,"Choose a file", self.dirname, "","*.*",wx.OPEN)#调用一个函数打开对话框 if dlg.ShowModal() == wx.ID_OK: self.filename = dlg.GetFilename() self.dirname = dlg.GetDirectory() f = open(os.path.join(self.dirname,self.filename),"r") dlg.Destroy()
然后把这个方法和添加进入菜单和一个按钮事件绑定起来
完整代码
import wximport osclass my_frame(wx.Frame): """This is a simple text editor""" def __init__(self,parent, title): wx.Frame.__init__(self, parent, title=title,size=(300,200)) self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE,) self.Show(True) self.CreateStatusBar()#创建窗口底部的状态栏 filemenu = wx.Menu() menu_open = filemenu.Append(wx.ID_OPEN,U"打开文件", " ") menu_exit = filemenu.Append(wx.ID_EXIT, "Exit", "Termanate the program") filemenu.AppendSeparator() menu_about = filemenu.Append(wx.ID_ABOUT, "About", "Information about this program")#设置菜单的内容 menuBar = wx.MenuBar() menuBar.Append(filemenu, u"设置") self.SetMenuBar(menuBar)#创建菜单条 self.Show(True) self.Bind(wx.EVT_MENU,self.on_open,menu_open) self.Bind(wx.EVT_MENU, self.on_about, menu_about) self.Bind(wx.EVT_MENU, self.on_exit, menu_exit)#把出现的事件,同需要处理的函数连接起来 def on_about(self,e):#about按钮的处理函数 dlg = wx.MessageDialog(self,"A samll text editor", "About sample Editor",wx.OK)#创建一个对话框,有一个ok的按钮 dlg.ShowModal()#显示对话框 dlg.Destroy()#完成后,销毁它。 def on_exit(self,e): self.Close(True) def on_open(self,e): """open a file""" self.dirname = '' dlg = wx.FileDialog(self,"Choose a file", self.dirname, "","*.*",wx.OPEN)#调用一个函数打开对话框 if dlg.ShowModal() == wx.ID_OK: self.filename = dlg.GetFilename() self.dirname = dlg.GetDirectory() f = open(os.path.join(self.dirname,self.filename),"r") dlg.Destroy()app = wx.App(False)frame = my_frame(None, 'Small edior')app.MainLoop()
# -*- coding: utf-8 -*-import wximport osclass my_frame(wx.Frame): """This is a simple text editor""" def __init__(self,parent, title): wx.Frame.__init__(self, parent, title=title,size=(300,200)) self.control = wx.TextCtrl(self, -1,u"请先打开要修改的文件", style=wx.TE_MULTILINE,) self.Show(True) self.CreateStatusBar()#创建窗口底部的状态栏 filemenu = wx.Menu() menu_open = filemenu.Append(wx.ID_OPEN, U"打开文件", " ") menu_save = filemenu.Append(wx.ID_SAVE, U"保存修改",) menu_exit = filemenu.Append(wx.ID_EXIT, "Exit", "Termanate the program") filemenu.AppendSeparator() menu_about = filemenu.Append(wx.ID_ABOUT, "About", "Information about this program")#设置菜单的内容 menuBar = wx.MenuBar() menuBar.Append(filemenu, u"选项") self.SetMenuBar(menuBar)#创建菜单条 self.Show(True) self.Bind(wx.EVT_MENU, self.on_open, menu_open) self.Bind(wx.EVT_MENU, self.on_about, menu_about) self.Bind(wx.EVT_MENU, self.on_exit, menu_exit)#把出现的事件,同需要处理的函数连接起来 self.Bind(wx.EVT_MENU, self.on_save, menu_save) def on_about(self,e):#about按钮的处理函数 dlg = wx.MessageDialog(self,"A samll text editor", "About sample Editor",wx.OK)#创建一个对话框,有一个ok的按钮 dlg.ShowModal()#显示对话框 dlg.Destroy()#完成后,销毁它。 def on_exit(self,e): self.Close(True) def on_open(self,e): """open a file""" self.dirname = '' dlg = wx.FileDialog(self,"Choose a file", self.dirname, "","*.*",wx.OPEN)#调用一个函数打开对话框 if dlg.ShowModal() == wx.ID_OK: self.filename = dlg.GetFilename() self.dirname = dlg.GetDirectory() self.address = os.path.join(self.dirname,self.filename) f = open(self.address,"r") file = (f.read()).decode(encoding='utf-8')#解码,使文件可以读取中文 f.close() self.control.Clear() self.control.AppendText(file)#把打开的文件内容显示在多行文本框内 dlg.Destroy() def on_save(self, e): date = (self.control.GetValue()).encode(encoding="utf-8")#编码,使中文可以正确存储 f = open(self.address, 'w') f.write(date) f.close()#把文本框内的数据写入并关闭文件 dlg = wx.MessageDialog(self, u"文件已经成功保存", u"消息提示", wx.OK) dlg.ShowModal() dlg.Destroy() self.control.Clear() self.control.AppendText(u'欢迎使用此软件,作者即刻')app = wx.App(False)frame = my_frame(None, u'迷你文本编辑器')app.MainLoop()
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。