wx作为一个GUI图形界面的模块一定要显示文本。
先显示静态文本吧。
wxpython中wx.StaticText可以显示静态文本。
wx.StaticText 构造函数的参数
parent :父窗口部件。
id :标识符。使用-1可以自动创建一个唯一的标识。
label :你想显示在静态控件中的文本。
pos :一个wx.Point 或一个Python 元组,它是窗口部件的位置。
size :一个wx.Size 或一个Python 元组,它是窗口部件的尺寸。
style :样式标记。
name :对象的名字,用于查找的需要。
接下来我们更详细地讨论样式标记。
一些专用于wx.StaticText 的样式。
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 样式。这样就防止了在文本被重置后,窗口部件自动调整尺寸到刚好包容了文本。如果静态文本是位于一个动态的布局中,那么改变它的尺寸可能导致屏幕上其它的窗口部件移动,这就对用户产生了干扰。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
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 text\ncan be split\n" "over multiple lines\n\neven blank ones", (20, 150)) # 显示对齐的多行文本 wx.StaticText(panel, -1, "Multi-line text\ncan also\n" "be right aligned\n\neven with a blank", (220, 150), style=wx.ALIGN_RIGHT) if __name__ == '__main__': app = wx.PySimpleApp() frame = StaticTextFrame() frame.Show() app.MainLoop() |