wxPython控件TextCtrl的多行及样式文本框

发布时间:2014-03-13

来源:服务器之家

#!/usr/bin/env python

#coding:UTF-8

'''

Created on 2010-5-14

wxPython多行文本输入框,以及丰富样式模式的

使用范例

@author: zyl508@gmail.com

'''

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"C:Runlog.txt")

def OnInit(self):

frame=MultiTextFrame()

frame.Show(True)

return True

def main():

app=MyApp()

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)

python多行输入框_wxPython控件TextCtrl的多行及样式文本框 - Python - 服务器之家相关推荐

  1. 《PyQT5软件开发 - 控件篇》第3章 单行文本框QLineEdit

    文本框是GUI界面中使用频率较高的控件,文本框又分为单行文本框和多行文本框,本文先讲单行文本框,单行文本框用途很广,比如密码账号密码框.搜索栏.路径地址栏等. 3.1简介 QLineEdit可以输入和 ...

  2. python tk text scrollbar_tk.Scrollbar控件的使用

    Scrollbar控件一般都是与Text或Listbox等需要上下滚动显示的控件一并使用,使得这些显示控件能够上下翻滚以便方便的显示和供人查看所有信息.那么,这就需要将Scrollbar与其它widg ...

  3. android什么控件能够输入多行文字,Android开发:文本控件详解——EditText(一)基本属性...

    一.简单实例: EditText输入的文字样式部分的属性,基本都是和TextView中的属性一样. 除此之外,EditText还有自己独有的属性. 二.基本属性: hint 输入框显示的提示文本 te ...

  4. 转——C# DataGridView控件 动态添加新行

    DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行, ...

  5. QRowTable表格控件-支持hover整行、checked整行、指定列排序等

    文章目录 一.开心一刻 二.嘴一嘴 三.效果展示 四.浅谈实现 五.自定义数据源 1.data函数 2.flags函数 六.自定义视图 1.目的 2.问题分析 七.测试 八.相关文章 原文链接: QR ...

  6. C# DataGridView控件动态添加新行

    目录 方法一: 方法二: ① DataGridView 取得或者修改当前单元格的内容: ② DataGridView 设定单元格只读: ③ DataGridView 不显示最下面的新行: ④ Data ...

  7. java控件数组_java通过复选框控件数组实现添加多个复选框控件示例分享

    思路如下: 创建JPanel面板对象: 使用JPanel类的setLayout(0,4)方法设置网格布局管理器,即列数为4,行数自动调节: 创建一个字符串型一维数组作为控件文本数组: 创建一个JChe ...

  8. java控件数组_java通过复选框控件数组实现添加多个复选框控件

    编写程序,通过复选框控件数组事先选择用户爱好信息的复选框,在该程序中,要求界面中的复选框数量可以根据指定复选框名称的字符串数组的长度来自动调节.方法如下: 创建JPanel面板对象: 使用JPanel ...

  9. java checkbox数组_Java通过复选框控件数组实现添加多个复选框控件

    编写程序,通过复选框控件数组事先选择用户爱好信息的复选框,在该程序中,要求界面中的复选框数量可以根据指定复选框名称的字符串数组的长度来自动调节. 思路如下: 创建JPanel面板对象: 使用JPane ...

最新文章

  1. AC日记——小书童——刷题大军 洛谷 P1926
  2. Mustache.js使用笔记(内容属于转载总结)
  3. 【Python 必会技巧】三元表达式(三目运算符)
  4. linux jobs继续运行,Linux jobs等前后台运行命令详解
  5. switch java 语法_Java_基础语法之switch语句
  6. 如何用iMazing来管理ios设备音频文件
  7. Android 动画录制 GIF录制
  8. 十六进制下的(6+2) 8位数颜色代码
  9. linux if 括号用法总结
  10. 前端-获取treegrid的选中数据
  11. node打包时遇到的问题
  12. C/C++ 函数(最大公约数)
  13. 最后教一次:完美解决电脑上的流氓软件
  14. 设计模式 -- 面向对象设计原则、黑箱/白箱复用
  15. 作为程序员,赚取额外收入的 4个简单副业!
  16. python里import as什么意思_import as和 from import 区别
  17. 动态规划 -- 二维数组中左上到右下的最短路径和。
  18. 学习 正则表达式 js java c# python 通用
  19. c语言怎么编辑乘法公式,编写函数:分数的乘法
  20. Arrow 之 list

热门文章

  1. 怎么自定义服务器的404,给网站设置404页面详细图文方法
  2. IDEA从零到精通(37)之导入IDEA开发的web项目
  3. oracle plug/unplug pdb
  4. 【MapGIS精品教程】009:空间缓冲区分析案例教程
  5. 计算机设备 硬件维护,计算机硬件的日常维护
  6. 继承构造函数调用顺序_C ++中带有继承的构造函数调用的顺序
  7. msfconsole
  8. python matplotlib绘制箭头 plt.annotate
  9. 企业软文推广应该怎么做?从三个方面着手,让你宣传效果更好
  10. linux的前世今生简洁语言,谁动了我的界面? PC系统UI的前世今生