当前位置: 首页 > 工具软件 > wxRuby > 使用案例 >

wxruby之文本控件

汤昊
2023-12-01

概括、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



 类似资料: