久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

Python如何用wx模塊創(chuàng)建文本編輯器

瀏覽:3日期:2022-07-22 13:29:06

用Python的wx模塊創(chuàng)建文本編輯器的方法:

1、設(shè)置按鈕的位置

import wxapp = wx.App()win = wx.Frame(None,title = '編輯器', size=(410,335))win.Show()loadButton = wx.Button(win, label = ’打開’,pos = (225,5),size = (80,25))saveButton = wx.Button(win, label = ’保存’,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)app.MainLoop()

2、對窗口內(nèi)容進(jìn)行布局

import wxapp = wx.App()win = wx.Frame(None,title = '編輯器', size=(410,335))bkg = wx.Panel(win)loadButton = wx.Button(bkg, label = ’打開’)saveButton = wx.Button(bkg, label = ’保存’)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()

3、添加事件處理函數(shù)

在GUI術(shù)語中,用戶執(zhí)行的動作(比如 點(diǎn)擊按鈕)叫做事件。我們需要讓程序注意這些事件并且作出反應(yīng)。

假設(shè)寫了一個(gè)負(fù)責(zé)打開文件的函數(shù),并將其命令為load ,然后就可以像下面這樣將函數(shù)作為loadButton的事件處理函數(shù):

loadButton.Bind(wx.EVT_BUTTON, load)

讓我們來完成剩下的工作,現(xiàn)在需要的就是兩個(gè)事件處理函數(shù):load(打開)和save(保存)。當(dāng)事件被調(diào)用時(shí),它會收到一個(gè)事件對象作為它唯一的參數(shù),其中包括發(fā)生了什么事情的信息,但是在這里可以忽略這方法的事情,因?yàn)槌绦蛑魂P(guān)心點(diǎn)擊時(shí)發(fā)生的事情。

def load(event): file = open(filename.GetValue()) contents.SetValue(file.read()) file.close()

文件名使用filename對象GetValue方法獲取。為了將文本引入文本區(qū),只要使用contents.SetValue即可。

save函數(shù)和load類似,除了它需要寫入(‘w’),以及用于文件處理部分的write方法,GetValue用于從文本區(qū)獲得信息。

def save(event): file = open(filename.GetValue(),’w’) file.write(contents.GetValue()) file.close()

完整代碼如下:

import wxdef load(event): file = open(filename.GetValue()) contents.SetValue(file.read()) file.close()def save(event): file = open(filename.GetValue(),’w’) file.write(contents.GetValue()) file.close()app = wx.App()win = wx.Frame(None,title = '編輯器', size=(410,335))bkg = wx.Panel(win)loadButton = wx.Button(bkg, label = ’打開’)loadButton.Bind(wx.EVT_BUTTON,load)saveButton = wx.Button(bkg, label = ’保存’)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()

執(zhí)行結(jié)果如下:

Python如何用wx模塊創(chuàng)建文本編輯器

內(nèi)容擴(kuò)展:

我們來創(chuàng)建一個(gè)文本編輯器,功能要求如下:

* 它可以打開給定文件名的文本文件;

* 它可以編輯文件文件

* 它可以保存文本文件

* 它可以正常退出程序

設(shè)置按鈕位置

import wxapp = wx.App()win = wx.Frame(None,title = '編輯器', size=(410,335))win.Show()loadButton = wx.Button(win, label = ’打開’,pos = (225,5),size = (80,25))saveButton = wx.Button(win, label = ’保存’,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)app.MainLoop()

這里可能需要注意的是,控件(按鈕,輸入框)的位置和尺寸,位置和尺寸都包括一對數(shù)值:位置包括x 和y坐標(biāo),而尺寸包括寬和高。

代碼比較簡單,按鈕控件(打開、保存)就不解釋了。需要注意的是文本控件,默認(rèn)的文本框(text field)就是一行可編譯的文本,沒有滾動條,為了創(chuàng)建文本區(qū)(text area)只要使用style參數(shù)調(diào)整風(fēng)格,style 參數(shù)的值實(shí)際上是個(gè)整數(shù),但不用直接指定,可以使用按位或運(yùn)算符OR聯(lián)合了wx.TE_MULTILINE來獲取多行文件區(qū),以及 wx.HSCROLL來獲取水平滾動條。

到此這篇關(guān)于Python如何用wx模塊創(chuàng)建文本編輯器的文章就介紹到這了,更多相關(guān)Python的wx模塊創(chuàng)建文本編輯器方法內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 荥阳市| 万安县| 巴彦淖尔市| 墨玉县| 湖南省| 大冶市| 陆河县| 沅陵县| 玉溪市| 综艺| 专栏| 上栗县| 襄汾县| 彰化县| 旬邑县| 高唐县| 喀什市| 资兴市| 连山| 灵川县| 水城县| 铅山县| 潼关县| 行唐县| 大连市| 洪湖市| 雷波县| 皋兰县| 原平市| 新津县| 区。| 靖远县| 根河市| 晋江市| 荣成市| 乐安县| 乌拉特中旗| 大田县| 齐齐哈尔市| 龙泉市| 榆中县|