日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

wxFormBuilder摸索--小白上手--做一个编辑器

發(fā)布時(shí)間:2023/12/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wxFormBuilder摸索--小白上手--做一个编辑器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

wxFormbuilder的文章非常少,也沒(méi)有一個(gè)官方指南,非常坑爹。不過(guò)網(wǎng)絡(luò)上有很多大神,參考了一下,然后自己再試試,頁(yè)算是能摸索出用法。wxFormbuilder只能設(shè)計(jì)布局,事件只能鏈接一個(gè)名字,具體的要導(dǎo)出來(lái)腳本之后,在主腳本繼承之后,再寫(xiě)。

參考了以下兩篇文章:

http://www.cnblogs.com/hester/p/4696355.html 做一個(gè)編輯器

http://blog.csdn.net/baoyan2015/article/details/54613930 如何安裝wxFormBuilder,然后導(dǎo)出GUI的代碼

之前用python不會(huì)GUI,總是用的腳本,非常不方便,于是想學(xué)習(xí)以下wxpython.

然而太難了,所以用wxFormBuilder來(lái)輔助一下。

一.目的是用wxFormBuilder設(shè)計(jì)一個(gè)這樣的東東


二.過(guò)程有點(diǎn)麻煩,參考文章一,在wxFormBuilder 點(diǎn)來(lái)點(diǎn)去,終于點(diǎn)成差不多的樣子,把參數(shù)啥的在旁邊填一下。

首先是一個(gè)Frame,然后加一個(gè)豎著的wxBoxSizer,然后再來(lái)一個(gè)橫著的wxBoxSizer,這兩個(gè)wxBoxSizer是一個(gè)按鈕,不過(guò)在旁邊的properties可以修改為橫著的,還是豎著的

然后添加一個(gè)wxTextCtril,兩個(gè)wxButton,再在下面添加一個(gè)wxTextCtrl就好了。




然后在右邊的Properties點(diǎn)點(diǎn)點(diǎn),填填填。點(diǎn)擊中間的Python頁(yè),能看到有python代碼在這。給他copy出來(lái),導(dǎo)出保存。我給它取名叫做MyFrame1.py


三.這個(gè)是導(dǎo)出的代碼?MyFrame1.py

# -*- coding: utf-8 -*-?


###########################################################################
## Python code generated with wxFormBuilder (version Jun 17 2015)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################


import wx
import wx.xrc


###########################################################################
## Class MyFrame1
###########################################################################


class MyFrame1 ( wx.Frame ):

def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"編輯器", pos = wx.DefaultPosition, size = wx.Size( 410,335 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )

bSizer1 = wx.BoxSizer( wx.VERTICAL )

bSizer2 = wx.BoxSizer( wx.HORIZONTAL )

self.filename = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.Point( 5,5 ), wx.Size( 210,25 ), 0 )
bSizer2.Add( self.filename, 0, wx.ALL, 5 )

self.loadbutton = wx.Button( self, wx.ID_ANY, "load", wx.Point( 225,5 ), wx.Size( 80,25 ), 0 )
bSizer2.Add( self.loadbutton, 0, wx.ALL, 5 )

self.savebutton = wx.Button( self, wx.ID_ANY, "save", wx.Point( 315,5 ), wx.Size( 80,25 ), 0 )
bSizer2.Add( self.savebutton, 0, wx.ALL, 5 )


bSizer1.Add( bSizer2, 1, wx.EXPAND, 5 )

self.contents = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.Point( 5,35 ), wx.Size( 390,260 ), wx.TE_MULTILINE|wx.HSCROLL )
bSizer1.Add( self.contents, 0, wx.ALL, 5 )


self.SetSizer( bSizer1 )
self.Layout()

self.Centre( wx.BOTH )

# Connect Events
self.loadbutton.Bind( wx.EVT_BUTTON, self.load )
self.savebutton.Bind( wx.EVT_BUTTON, self.save )

def __del__( self ):
pass


# Virtual event handlers, overide them in your derived class
def load( self, event ):
pass

def save( self, event ):
pass


四.在同一個(gè)文件夾下面做一個(gè)主腳本ex22.py,調(diào)用繼承上面的那個(gè)腳本。以下是代碼:

# -*- coding: UTF-8 -*-??
import wx
import MyFrame1
import sys?
reload(sys)?
sys.setdefaultencoding('utf-8')




class MyFrame(MyFrame1.MyFrame1):
? ? # 首先,咱們從剛剛源文件中將主窗體繼承下來(lái).就是修改過(guò)name屬性的主窗體咯。
def load( self, event):
file=open(self.filename.GetValue())
self.contents.SetValue(file.read())
file.close

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

if __name__ == '__main__':
? ? app = wx.App()
??
? ? main_win = MyFrame(None)
? ? main_win.Show()

? ? app.MainLoop()


五.運(yùn)行試試:


輸入文件名,可以打開(kāi)同目錄下的文件,而且顯示在下方。修改后也可以保存。


總結(jié)

以上是生活随笔為你收集整理的wxFormBuilder摸索--小白上手--做一个编辑器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。