概括、StaticText实现label的功能,另外还有多行文本空间和富文本控件。
#coding=utf-8
require "wx"
BTN1_ID=10001
def gridframe(frame)
label1=Wx::StaticText.new(frame,-1,"label控件就是StaticText",Wx::Point.new(100,50))
#位置参数在title后面
text1=Wx::TextCtrl.new(frame,-1,"这是文本控件",Wx::Point.new(100,100),Wx::Size.new(200,-1))
#单行文本的高度设置为默认就可以了
evt_text(text1.get_id()){|evt|on_evt_text(evt,frame)} #所有的事件
text1.evt_char{|char|on_evt_char(char,frame)} #当向文本框中输入字符时触发此事件
text2=Wx::TextCtrl.new(frame,-1,"多行文本控件",Wx::Point.new(100,150),Wx::Size.new(200,100),Wx::TE_MULTILINE)
#事件和单行文本控件类似
text3=Wx::TextCtrl.new(frame,-1,"富文本控件",Wx::Point.new(350,150),Wx::Size.new(200,150),Wx::TE_MULTILINE|Wx::TE_RICH)
font= Wx::Font.new(12,Wx::ROMAN, Wx::ITALIC, Wx::BOLD, true) #-1为默认参数
text3.set_style(0,12,Wx::TextAttr.new(Wx::Colour.new("BLUE"),Wx::Colour.new("RED"), font))
#前景色,背景色,字体
end
def on_evt_text(evt,frame)
dlg=Wx::MessageDialog.new(frame,evt.to_s,"event on text1",Wx::OK)
dlg.show_modal()
end
def on_evt_char(char,frame)
dlg=Wx::MessageDialog.new(frame,char.to_s,"char input!",Wx::OK)
dlg.show_modal()
char.skip() #text的char事件必须要调用此函数,输入的char才会作用于文本框
end
class BtnFrame < Wx::Frame
def initialize(title,pos,size)
super(nil,-1,title,pos,size)
center(Wx::BOTH)
panel=Wx::Panel.new(self,-1,Wx::DEFAULT_POSITION,Wx::DEFAULT_SIZE)
gridframe(panel)
end
end
class TextApp < Wx::App
def on_init
topframe = BtnFrame.new("btn example",Wx::DEFAULT_POSITION,Wx::Size.new(600,400))
topframe.show(true)
end
end
btnapp = TextApp.new
btnapp.main_loop