python多⾏输⼊框_wxPython控件TextCtrl的多⾏及样式⽂本
框-Pytho。。。
wxPython控件TextCtrl的多⾏及样式⽂本框
发布时间:2014-03-13
来源:服务器之家
#!/usr/bin/env python
#coding:UTF-8
'''
Created on 2010-5-14
wxPython多⾏⽂本输⼊框,以及丰富样式模式的
使⽤范例
@author: zyl508@gmail
'''
import wx
class MultiTextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,"Example For MultiTextCtrl",
size=(300,250))
panel=wx.Panel(self,-1)
#普通多⾏⽂本输⼊框
multiLabel=wx.StaticText(panel,-1,"Multi-Line:")
multiText=wx.TextCtrl(panel,-1,"Here we gonnntest",
size=(200,100),
style=wx.TE_MULTILINE)
multiText.SetInsertionPoint(0)
#丰富式样的多⾏⽂本输⼊框
richLabel=wx.StaticText(panel,-1,"Rich-Label:")
richText=wx.TextCtrl(panel,-1,
"如果系统⽀持的话nnThis is a diff font",
size=(200,100),
#创建丰富⽂本控件
style=wx.TE_MULTILINE|wx.TE_RICH2)
richText.SetInsertionPoint(0)
#设置richText控件的⽂本样式
richText.SetStyle(2,6,wx.TextAttr("white","black"))
points=richText.GetFont().GetPointSize()
#创建⼀个字体样式
f=wx.Font(points+3,wx.ROMAN,wx.ITALIC,wx.BOLD,True)
#⽤创建的字体样式设置⽂本样式
richText.SetStyle(8,14,wx.TextAttr("blue",wx.NullColor,f))
#将上边俩⽂本框⽤Sizer管理布局
sizer=wx.FlexGridSizer(cols=2,vgap=6,hgap=6)
#AddMany⽅法添加的⼀定是⼀个列表list
sizer.AddMany([multiLabel,multiText,richLabel,richText])
panel.SetSizer(sizer)
class MyApp(wx.App):
def __init__(self):
#重构__init__⽅法,将错误信息重定位到⽂件中;
#默认redirect=True,输出到StdOut或StdError;
#为防⽌程序因错误⼀闪⽽过⽆法捕捉信息,可在
#控制台中使⽤python -i
example.py来运⾏程序。
wx.App.__init__(self,redirect=False,filename=r"")
def OnInit(self):
frame=MultiTextFrame()
frame.Show(True)
return True
def main():
app=MyApp()
textbox控件边框设置app.MainLoop()
if __name__=="__main__":
main()
#① 其他只在多⾏或样式⽂本框中才起作⽤的style值有:
wx.HSCROLL:除⾮设置,否则不⾃动换⾏,并设置⽔平滚动条。
wx.TE_AUTO_URL:如果RICH或RICH2被设置并且系统⽀持的话,本样式将使⽤户⿏标移到URL上或点击URL时,产⽣⼀个事件。
wx.TE_DONTWARP: wx.HSCROLL的别名
wx.TE_LINEWARP: 以字符为界⾃动换⾏
wx.TE_MULTILINE:⽂本控制显⽰多⾏
wx.TE_RICH:⽤于windows,允许丰富⽂本样式的使⽤
wx.TE_RICH2:同上,新版本
wx.TE_WORDWARP:以单词为界⾃动换⾏
式样可组合使⽤,如多⾏丰富式样:wx.MULTILINE|wx.RICH
TextCtrl的丰富样式要以类wx.TextAttr的实例来构造。例:
wx.TextAttr(textColor,backgroundColor=wx.NullColor,font=wx.NullFont)
其中color可以是颜⾊名或"RGB"值。NullColor,NullFont都是指使⽤系统默认值。#② wx.TextAttr类的属性⽅法:
GetBackgroundColour():
GetFont():
GetTextColour():获取背景⾊,字体,字体颜⾊。
HasBackgroundColour()
HasFont()
HasTextColour():获取属性值存在性,返回Bool值,属性为默认值,Has*返回False,三项属性都为默认值则IsDefault()返回True。
#③ 当选⽤多⾏或丰富⽂本输⼊框时,wx.TextCtrl会附带下列⽅法:GetDefaultStyle()
SetDefaultStyle(style)
SetStyle(start,end,style):应⽤⽂本样式,必须调⽤SetDeaultStyle()或SetStyle()前者会保留设置了默认样式的⽂字的样式,
后者则会⽴刻改变从start到end范围能的⽂字。
例:
richText.SetStyle(8,14,wx.TextAttr("white","black"))
GetLineLength(lineNO):返回给定⾏的长度,整数值
GetLineText(lineNo):返回给定⾏的⽂本
GetNumberOfLines():返回⾏数,单⾏返回1
IsMultiLine()
IsSingleLine():返回是多⾏还是单⾏的Bool值,确定控件的状态。
PositionToXY(pos):指定⽂本内的⼀个位置(int型),返回该位置所在(列,⾏)的元组,列,⾏的初始值都是0
ShowPosition(pos):显⽰指定位置的内容
XYToPosition():指定⾏列,返回该位置的整数值索引。
#④ 如何创建字体样式:
字体是wx.Font类的⼀个实例,构造函数如下:
wx.Font(pointSize,family,style,weight,underline=False,facename="", encoding=wx.FONTENCODING_DEFAULT)
参数介绍:
pointSize:以磅为单位的字体⼤⼩,整数值。
family:快速指定字体,⽀持的列表如下:%%%%%%%%%%%%%%%%%%%%%%%%
wx.DECORATIVE:⼀个正式的,⽼的英⽂样式字体。
wx.DEFAULT:系统默认字体。
wx.MODERN:⼀个单间隔(固定字符间距)字体。
wx.ROMAN:serif字体,通常类似于Times
New Roman。
wx.SCRIPT:⼿写体或草写体
wx.SWISS:sans-serif字体,通常类似于Helvetica或Arial。%%%%%%%%%%%%%%%%%%%%%%%%
style:字体是否倾斜,其值有wx.NORMAL,wx.SLANT,wx.ITALIC。weight:是否显⽰粗体,其值有wx.NORMAL,wx.LIGHT,wx.BOLD。underline:仅windows可⽤,True为带下划线,False不带。faceName:指定字体名,获取系统注册的字体名的⼀个列表(list),⽅法是:e=wx.FontEnumerator()
wx.EnumerateFacenames()
fontList=e.GetFacenames()
如果要限制列表为固定宽度,则第⼀⾏修改为
e=wx.FontEnumerator(fixedWidth=True)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论