7. 使用基本的控件工作 [wxPython in Action]
2008-01-31 15:18
204 查看
7、使用基本的控件工作
wxPython工具包提供了多种不同的窗口部件,包括了本章所提到的基本控 件。我们涉及静态文本、可编辑的文本、按钮、微调、滑块、复选框、单选按钮、选择器、列表框、组合框和标尺。对于每种窗口部件,我们将提供一个关于如何使 用它的简短例子,并附上相关的wxPython API的说明。
7.1 显示文本
这一节以在屏幕上显示文本的例子作为开始,包括用作标签的静态文本域,有样式和无样式的都使用了。你可以创建用于用户输入的单行和多行文本域。另外,我们将讨论如何选择文本的字体。
7.1.1 如何显示静态文本?
大概对于所有的UI工具来说,最基本的任务就是在屏幕上绘制纯文本。在wxPython中,使用类wx.StaticText来完成。图7.1显示了这个静态文本控件。
在wx.StaticText 中,你能够改变文本的对齐方式、字体和颜色。简单的静态文本控件可以包含多行文本,但是你不能处理多种字体或样式。处理多种字体或样式,要使用更精细的文 本控件,如wx.html.HTMLWindow,它在第十六章中说明。为了在静态文本控件中显示多行文本,我们要包括其中有换行符的字符串,并使控件的 大小足够显示所有的文本。有一个特点是你在图7.1中所不能看到的,那就是wx.StaticText窗口不会接受或响应鼠标事件。
如何显示静态文本
例子7.1显示了产生图7.1的代码。
例7.1 如何使用静态文本的一个基本例子
import wx
class StaticTextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Static Text Example',
size=(400, 300))
panel = wx.Panel(self, -1)
# 这是一个基本的静态文本
wx.StaticText(panel, -1, "This is an example of static text",
(100, 10))
# 指定了前景色和背景色的静态文本
rev = wx.StaticText(panel, -1, "Static Text With Reversed Colors",
(100, 30))
rev.SetForegroundColour('white')
rev.SetBackgroundColour('black')
# 指定居中对齐的的静态文本
center = wx.StaticText(panel, -1, "align center", (100, 50),
(160, -1), wx.ALIGN_CENTER)
center.SetForegroundColour('white')
center.SetBackgroundColour('black')
# 指定右对齐的静态文本
right = wx.StaticText(panel, -1, "align right", (100, 70),
(160, -1), wx.ALIGN_RIGHT)
right.SetForegroundColour('white')
right.SetBackgroundColour('black')
# 指定新字体的静态文本
str = "You can also change the font."
text = wx.StaticText(panel, -1, str, (20, 100))
font = wx.Font(18, wx.DECORATIVE, wx.ITALIC, wx.NORMAL)
text.SetFont(font)
# 显示多行文本
wx.StaticText(panel, -1, "Your textncan be splitn"
"over multiple linesnneven blank ones", (20,150))
#显示对齐的多行文本
wx.StaticText(panel, -1, "Multi-line textncan alson"
"be right alignednneven with a blank", (220,150),
style=wx.ALIGN_RIGHT)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = StaticTextFrame()
frame.Show()
app.MainLoop()
wx.StaticText的构造函数和基本的wxWidget构造函数相同,如下所示:
wx.StaticText(parent, id, label, pos=wx.DefaultPosition,
size=wx.DefaultSize, style=0, name="staticText")
表7.1说明了这些参数——大多数的wxPython窗口部件都有相类似的参数。对于构造函数的参数的更详细的说明,请参见第2章的相关论述。
表7.1 wx.StaticText构造函数的参数
parent:父窗口部件。
id:标识符。使用-1可以自动创建一个唯一的标识。
label:你想显示在静态控件中的文本。
pos:一个wx.Point或一个Python元组,它是窗口部件的位置。
size:一个wx.Size或一个Python元组,它是窗口部件的尺寸。
style:样式标记。
name:对象的名字,用于查找的需要。
接下来我们更详细地讨论样式标记。
使用样式工作
所有在例7.1中静态文本实例所调用的方法都是属于基父类wx.Window的;wx.StaticText没有定义任何它自己的新方法。表7.2列出了一些专用于wx.StaticText的样式。
表7.2
wx.ALIGN_CENTER:静态文本位于静态文本控件的中心。
wx.ALIGN_LEFT:文本在窗口部件中左对齐。这是默认的样式。
wx.ALIGN_RIGHT:文本在窗口部件中右对齐。
wx.ST_NO_AUTORESIZE:如果使用了这个样式,那么在使用了SetLabel()改变文本之后,静态文本控件不将自我调整尺寸。你应结合使用一个居中或右对齐的控件来保持对齐。
wx.StaticText控件覆盖了SetLabel(),以便根据新的文本来调整自身,除非wx.ST_NO_AUTORESIZE样式被设置了。
当 创建了一个居中或右对齐的单行静态文本时,你应该显式地在构造器中设置控件的尺寸。指定尺寸以防止wxPython自动调整该控件的尺寸。 wxPython的默认尺寸是刚好包容了文本的矩形尺寸,因此对齐就没有什么必要。要在程序中动态地改变窗口部件中的文本,而不改变该窗口部件的尺寸,就 要设置wx.ST_NO_AUTORESIZE样式。这样就防止了在文本被重置后,窗口部件自动调整尺寸到刚好包容了文本。如果静态文本是位于一个动态的 布局中,那么改变它的尺寸可能导致屏幕上其它的窗口部件移动,这就对用户产生了干扰。
其它显示文本的技术
还 有其它的方法来显示文本。其中之一就是wx.lib.stattext.GenStaticText类,它是wx.StaticText的纯Python 实现。它比标准C++版的跨平台性更好,并且它接受鼠标事件。当你想子类化或创建你自己的静态文本控件时,它是更可取的。
你可以使用 DrawText(text, x,y)和DrawRotatedText(text, x, y, angle)方法直接绘制文本到你的设备上下文。后 者是显示有一定角度的文本的最容易的方法,尽管GenStaticText的子类也能处理旋转问题。设备上下文在第6章中做了简短的说明,我们将在第12 章中对它做更详细的说明。
wxPython工具包提供了多种不同的窗口部件,包括了本章所提到的基本控 件。我们涉及静态文本、可编辑的文本、按钮、微调、滑块、复选框、单选按钮、选择器、列表框、组合框和标尺。对于每种窗口部件,我们将提供一个关于如何使 用它的简短例子,并附上相关的wxPython API的说明。
7.1 显示文本
这一节以在屏幕上显示文本的例子作为开始,包括用作标签的静态文本域,有样式和无样式的都使用了。你可以创建用于用户输入的单行和多行文本域。另外,我们将讨论如何选择文本的字体。
7.1.1 如何显示静态文本?
大概对于所有的UI工具来说,最基本的任务就是在屏幕上绘制纯文本。在wxPython中,使用类wx.StaticText来完成。图7.1显示了这个静态文本控件。
在wx.StaticText 中,你能够改变文本的对齐方式、字体和颜色。简单的静态文本控件可以包含多行文本,但是你不能处理多种字体或样式。处理多种字体或样式,要使用更精细的文 本控件,如wx.html.HTMLWindow,它在第十六章中说明。为了在静态文本控件中显示多行文本,我们要包括其中有换行符的字符串,并使控件的 大小足够显示所有的文本。有一个特点是你在图7.1中所不能看到的,那就是wx.StaticText窗口不会接受或响应鼠标事件。
如何显示静态文本
例子7.1显示了产生图7.1的代码。
例7.1 如何使用静态文本的一个基本例子
import wx
class StaticTextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Static Text Example',
size=(400, 300))
panel = wx.Panel(self, -1)
# 这是一个基本的静态文本
wx.StaticText(panel, -1, "This is an example of static text",
(100, 10))
# 指定了前景色和背景色的静态文本
rev = wx.StaticText(panel, -1, "Static Text With Reversed Colors",
(100, 30))
rev.SetForegroundColour('white')
rev.SetBackgroundColour('black')
# 指定居中对齐的的静态文本
center = wx.StaticText(panel, -1, "align center", (100, 50),
(160, -1), wx.ALIGN_CENTER)
center.SetForegroundColour('white')
center.SetBackgroundColour('black')
# 指定右对齐的静态文本
right = wx.StaticText(panel, -1, "align right", (100, 70),
(160, -1), wx.ALIGN_RIGHT)
right.SetForegroundColour('white')
right.SetBackgroundColour('black')
# 指定新字体的静态文本
str = "You can also change the font."
text = wx.StaticText(panel, -1, str, (20, 100))
font = wx.Font(18, wx.DECORATIVE, wx.ITALIC, wx.NORMAL)
text.SetFont(font)
# 显示多行文本
wx.StaticText(panel, -1, "Your textncan be splitn"
"over multiple linesnneven blank ones", (20,150))
#显示对齐的多行文本
wx.StaticText(panel, -1, "Multi-line textncan alson"
"be right alignednneven with a blank", (220,150),
style=wx.ALIGN_RIGHT)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = StaticTextFrame()
frame.Show()
app.MainLoop()
wx.StaticText的构造函数和基本的wxWidget构造函数相同,如下所示:
wx.StaticText(parent, id, label, pos=wx.DefaultPosition,
size=wx.DefaultSize, style=0, name="staticText")
表7.1说明了这些参数——大多数的wxPython窗口部件都有相类似的参数。对于构造函数的参数的更详细的说明,请参见第2章的相关论述。
表7.1 wx.StaticText构造函数的参数
parent:父窗口部件。
id:标识符。使用-1可以自动创建一个唯一的标识。
label:你想显示在静态控件中的文本。
pos:一个wx.Point或一个Python元组,它是窗口部件的位置。
size:一个wx.Size或一个Python元组,它是窗口部件的尺寸。
style:样式标记。
name:对象的名字,用于查找的需要。
接下来我们更详细地讨论样式标记。
使用样式工作
所有在例7.1中静态文本实例所调用的方法都是属于基父类wx.Window的;wx.StaticText没有定义任何它自己的新方法。表7.2列出了一些专用于wx.StaticText的样式。
表7.2
wx.ALIGN_CENTER:静态文本位于静态文本控件的中心。
wx.ALIGN_LEFT:文本在窗口部件中左对齐。这是默认的样式。
wx.ALIGN_RIGHT:文本在窗口部件中右对齐。
wx.ST_NO_AUTORESIZE:如果使用了这个样式,那么在使用了SetLabel()改变文本之后,静态文本控件不将自我调整尺寸。你应结合使用一个居中或右对齐的控件来保持对齐。
wx.StaticText控件覆盖了SetLabel(),以便根据新的文本来调整自身,除非wx.ST_NO_AUTORESIZE样式被设置了。
当 创建了一个居中或右对齐的单行静态文本时,你应该显式地在构造器中设置控件的尺寸。指定尺寸以防止wxPython自动调整该控件的尺寸。 wxPython的默认尺寸是刚好包容了文本的矩形尺寸,因此对齐就没有什么必要。要在程序中动态地改变窗口部件中的文本,而不改变该窗口部件的尺寸,就 要设置wx.ST_NO_AUTORESIZE样式。这样就防止了在文本被重置后,窗口部件自动调整尺寸到刚好包容了文本。如果静态文本是位于一个动态的 布局中,那么改变它的尺寸可能导致屏幕上其它的窗口部件移动,这就对用户产生了干扰。
其它显示文本的技术
还 有其它的方法来显示文本。其中之一就是wx.lib.stattext.GenStaticText类,它是wx.StaticText的纯Python 实现。它比标准C++版的跨平台性更好,并且它接受鼠标事件。当你想子类化或创建你自己的静态文本控件时,它是更可取的。
你可以使用 DrawText(text, x,y)和DrawRotatedText(text, x, y, angle)方法直接绘制文本到你的设备上下文。后 者是显示有一定角度的文本的最容易的方法,尽管GenStaticText的子类也能处理旋转问题。设备上下文在第6章中做了简短的说明,我们将在第12 章中对它做更详细的说明。
相关文章推荐
- (温故而知新)iOS开发UI篇—UITableview控件基本使用
- ios开发——基本控件与变量(数据)的关联与使用
- IOS开发-常用UI控件的基本使用(Transform形变属性、frame属性、center属性的使用)
- CStatic控件的基本使用
- C#Window控件及窗体的基本使用
- IOS学习笔记(七)之UISegmentedControl分段控件的基本概念和使用方法
- IOS的基本控件的使用-UISwitch控件
- Python实例讲解 -- wxpython 基本的控件 (按钮)
- iOS开发UI篇—UITableview控件基本使用
- [Android] ListView (普通列表控件) 的基本使用方法
- 当页面有ID重复的控件时,使用Validator后仍能正常工作
- ActiveX控件的基本操作方法以及如何在VS2010下使用控件
- IOS UISwitch控件的基本使用
- iphone新手上路: KVC模式和iPhone基本控件的使用
- IOS的基本控件的使用-UILabel
- 使用MS图表控件创建基本报表
- DevExpress 控件使用之GridControl基本属性设置
- c# Calendar 日历控件 基本使用说明
- 9.2 使用标准对话框 [wxPython In Action]
- 11.4 一个现实中使用sizer的例子 [wxPython in Action]