转载请注明出处,本文作者:TEER,邮箱:[email protected]
本文是作者学习wxpython过程中的随笔,主要是StaticText的相关操作,本文会持续更新。
目录
一、各个部分代码介绍
1、StaticText的建立
2、StaticText文本字体大小、颜色、风格、斜体、字体背景颜色等操作
3、如何获得并且更改StaticText的文字内容,如何获得StaticText的大小以及位置
4、如何实现StaticText文本的透明
5、StaticText文本的多行显示
6、如何实现鼠标进入或者离开StaticText文本的显示
7、如何实现鼠标单击StaticText文本的显示
二、总的函数以及界面展示
1、界面展示:
2、代码:
调用格式:Wx.StaticText(parent, id, label, position, size, style)
parent(wx.Window)–父窗口。不应该None。也就是,在什么地方显示
id(wx.WindowID)–控件标识符,值-1表示默认值。
label(字符串)–文本标签,也就是显示的内容。
pos(wx.Point)–窗口位置。
size(wx.Size)–窗口大小。
style(long)–窗口样式。
其中style格式有:
wx.ALIGN_LEFT | 文本向左对齐 | 文本的一个对齐操作 |
wx.ALIGN_RIGHT | 文本向右对齐 | |
wx.ALIGN_CENTRE_HORIZONTAL | 文本居中(水平) | |
wx.ST_NO_AUTORESIZE | 使用后不能自动调整大小 | |
wx.ST_ELLIPSIZE_START | 省略号在开头显示 | 如果标签文本的宽度超过控件的宽度,多余文本的省略号在哪显示 |
wx.ST_ELLIPSIZE_MIDDLE | 省略号在中间显示 | |
wx.ST_ELLIPSIZE_END | 省略号在结尾显示 |
代码部分:
#最简单的调用
wx.StaticText(panel, -1, '简单的调用', (10,10))
#常规调用操作
custom = wx.StaticText(panel, -1, '普通格式,可自动调整大小', pos=(10, 30), size=(160, -1), style=wx.ALIGN_CENTRE_HORIZONTAL)
custom2 = wx.StaticText(panel, -1, '普通格式,不可自动调整大小', pos=(10, 50), size=(160, -1), style=wx.ALIGN_CENTRE_HORIZONTAL|wx.ST_NO_AUTORESIZE)
函数操作:
SetFont(wx.Font) |
设置字体 |
SetForegroundColour(color) |
设置字体颜色 |
SetBackgroundColour(color) |
设置字体的背景颜色 |
字体相关的调用格式:Wx.Font(pointsize, fontfamily, fontstyle, fontweight)
pointsize:指文字大小,比如:12、14这些数
fontfamily:选择哪一种字体
1 | wx.FONTFAMILY_DEFAULT 选择默认字体 |
2 | wx.FONTFAMILY_DECORATIVE 选择装饰字体 |
3 | wx.FONTFAMILY_ROMAN 选择正式的衬线字体 |
4 | wx.FONTFAMILY_SCRIPT 选择手写字体 |
5 | wx.FONTFAMILY_SWISS 选择sans-serif字体 |
6 | wx.FONTFAMILY_MODERN 选择固定间距字体 |
7 | wx.FONTFAMILY_TELETYPE 选择电传打字机(等宽字体) |
fontstyle:字体是不是倾斜
1 |
Wx.FONTSTYLE_NORMAL 字体绘制没有倾斜 |
2 |
wx.FONTSTYLE_ITALIC 字体以斜体样式倾斜 |
3 |
wx.FONTSTYLE_SLANT 字体是倾斜的,但是罗马风格 |
fontweight:字体是不是加粗
1 | Wx.FONTWEIGHT_NORMAL 普通字体 |
2 | wx.FONTWEIGHT_LIGHT 轻字体 |
3 | wx.FONTWEIGHT_BOLD 粗体 |
代码部分:
custom = wx.StaticText(panel, -1, '普通格式,可自动调整大小', pos=(10, 30), size=(160, -1), style=wx.ALIGN_CENTRE_HORIZONTAL)
custom2 = wx.StaticText(panel, -1, '普通格式,不可自动调整大小', pos=(10, 50), size=(160, -1), style=wx.ALIGN_CENTRE_HORIZONTAL|wx.ST_NO_AUTORESIZE)
#这里可以设置静态文本的格式,包括字体大小,颜色,背景,倾斜,粗体等等属性
#Wx.Font(pointsize, fontfamily, fontstyle, fontweight)
custom.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL))
#custom.SetForegroundColour((255, 0, 0))#设置文字颜色
custom.SetForegroundColour('red')#red或者(255,0,0)都可以用来设置颜色
custom.SetBackgroundColour('blue')#设置背景颜色
custom2.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL))
custom2.SetBackgroundColour('red')
用SetLabel()与GetLabel()函数可以实现替换和获得,或者直接使用StaticText.Label便可以得到文本内容,StaticText.Label=“”便可以实现替换文本的内容。
代码:
#SetLabel可以设置更改文本的内容
StaticText1=wx.StaticText(panel, -1, '我是原来的内容', (10, 70))
StaticText1.SetLabel("我是更改之后的")
StaticText1.Label = "我是更改之后的"#这种方式也可以更改静态文本内容
#得到静态文本的内容
print(StaticText1.GetLabel())
print(StaticText1.Label)#另外一种方式
参考网络上其他人的博客介绍:https://blog.csdn.net/zy0412326/article/details/102928274
自己新建一个类,然后调用这个TransparentStaticText和调用StaticText这个类一样。
新建的类:
####这个类是用来实现透明控件的
class TransparentStaticText(wx.StaticText):
def __init__(self, parent, id=wx.ID_ANY, label='', pos=wx.DefaultPosition, size=wx.DefaultSize,
style=wx.TRANSPARENT_WINDOW, name='TransparentStaticText'):
wx.StaticText.__init__(self, parent, id, label, pos, size, style, name)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_ERASE_BACKGROUND, lambda event: None)
self.Bind(wx.EVT_SIZE, self.OnSize)
def OnPaint(self, event):
bdc = wx.PaintDC(self)
dc = wx.GCDC(bdc)
font_face = self.GetFont()
font_color = self.GetForegroundColour()
dc.SetFont(font_face)
dc.SetTextForeground(font_color)
dc.DrawText(self.GetLabel(), 0, 0)
def OnSize(self, event):
self.Refresh()
event.Skip()
python中可以借助/n实现换行操作
#\n可以用来静态文本换行,并且默认是自动调整文本的大小
StaticText2=wx.StaticText(panel, -1, '第一行我很长的\n第二行\n第三行', (10, 90))
StaticText2.SetForegroundColour((255, 0, 0))
StaticText2.SetBackgroundColour('yellow') # 设置背景颜色
主要是利用wx.EVT_LEAVE_WINDOW、wx.EVT_ENTER_WINDOW两个事件进行判断。
#这里是实现静态文本与鼠标交互的操作
StaticText4=wx.StaticText(panel, -1, '鼠标请进入我', (10, 170))
StaticText4.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.NORMAL))
StaticText4.SetBackgroundColour('pink')
#进入和离开控件函数的绑定
StaticText4.Bind(wx.EVT_LEAVE_WINDOW, self.Leave_Text)
StaticText4.Bind(wx.EVT_ENTER_WINDOW, self.Enter_Text)
#进入静态文本控件的函数处理
def Enter_Text(self,event):
print("已经进入:"+event.GetEventObject().GetLabel())
print(event.GetEventObject().GetPosition())#得到这个控件的位置
print(event.GetEventObject().GetSize())#得到这个控件的大小
event.GetEventObject().Label="鼠标请离开我"
# 离开静态文本控件的函数处理
def Leave_Text(self,event):
print("已经离开:"+event.GetEventObject().GetLabel())
print(event.GetEventObject().GetPosition())#得到这个控件的位置
print(event.GetEventObject().GetSize())#得到这个控件的大小
event.GetEventObject().Label="鼠标请进入我"
主要是利用wx.EVT_LEFT_DOWN进行判断。
#这里是实现静态文本与鼠标交互的操作
StaticText4=wx.StaticText(panel, -1, '鼠标请进入我', (10, 170))
StaticText4.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.NORMAL))
StaticText4.SetBackgroundColour('pink')
#鼠标单击控件
StaticText4.Bind(wx.EVT_LEFT_DOWN, self.Click_Text)
#进入静态文本控件的函数处理
def Click_Text(self,event):
print("正在左键单击单击:"+event.GetEventObject().GetLabel())
'''
author:TEER
time:2020/5/12
'''
import wx
####这个类是用来实现透明控件的
class TransparentStaticText(wx.StaticText):
def __init__(self, parent, id=wx.ID_ANY, label='', pos=wx.DefaultPosition, size=wx.DefaultSize,
style=wx.TRANSPARENT_WINDOW, name='TransparentStaticText'):
wx.StaticText.__init__(self, parent, id, label, pos, size, style, name)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_ERASE_BACKGROUND, lambda event: None)
self.Bind(wx.EVT_SIZE, self.OnSize)
def OnPaint(self, event):
bdc = wx.PaintDC(self)
dc = wx.GCDC(bdc)
font_face = self.GetFont()
font_color = self.GetForegroundColour()
dc.SetFont(font_face)
dc.SetTextForeground(font_color)
dc.DrawText(self.GetLabel(), 0, 0)
def OnSize(self, event):
self.Refresh()
event.Skip()
class MyFrame(wx.Frame):
def __init__(self, *args, **kw):
super().__init__(*args, **kw)
self.Center(True) #屏幕居中显示
panel = wx.Panel(self)
#调用格式 Wx.StaticText(parent, id, label, position, size, style)
#parent(wx.Window)–父窗口。不应该None。id(wx.WindowID)–控件标识符,值-1表示默认值。
# label(字符串)–文本标签,也就是显示的内容。
#pos(wx.Point)–窗口位置。size(wx.Size)–窗口大小。style(long)–窗口样式。参见 wx.StaticText。
#最简单的调用
wx.StaticText(panel, -1, '简单的调用', (10,10))
#style格式:
# wx.ALIGN_LEFT:将文本向左对齐。
# wx.ALIGN_RIGHT:将文本向右对齐。
# wx.ALIGN_CENTRE_HORIZONTAL:将文本居中(水平)。
# wx.ST_NO_AUTORESIZE:默认情况下,控件将调整其大小以使其完全适合SetLabel被调用时文本的大小,此功能是不调整
custom = wx.StaticText(panel, -1, '普通格式,可自动调整大小', pos=(10, 30), size=(160, -1), style=wx.ALIGN_CENTRE_HORIZONTAL)
custom2 = wx.StaticText(panel, -1, '普通格式,不可自动调整大小', pos=(10, 50), size=(160, -1), style=wx.ALIGN_CENTRE_HORIZONTAL|wx.ST_NO_AUTORESIZE)
#这里可以设置静态文本的格式,包括字体大小,颜色,背景,倾斜,粗体等等属性
#Wx.Font(pointsize, fontfamily, fontstyle, fontweight)
custom.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL))
#custom.SetForegroundColour((255, 0, 0))#设置文字颜色
custom.SetForegroundColour('red')#red或者(255,0,0)都可以用来设置颜色
custom.SetBackgroundColour('blue')#设置背景颜色
custom2.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL))
custom2.SetBackgroundColour('red')
#SetLabel可以设置更改文本的内容
StaticText1=wx.StaticText(panel, -1, '我是原来的内容', (10, 70))
StaticText1.SetLabel("我是更改之后的")
StaticText1.Label = "我是更改之后的"#这种方式也可以更改静态文本内容
#得到静态文本的内容
print(StaticText1.GetLabel())
print(StaticText1.Label)#另外一种方式
#\n可以用来静态文本换行,并且默认是自动调整文本的大小
StaticText2=wx.StaticText(panel, -1, '第一行我很长的\n第二行\n第三行', (10, 90))
StaticText2.SetForegroundColour((255, 0, 0))
StaticText2.SetBackgroundColour('yellow') # 设置背景颜色
#这里是透明的静态文本框实现,设置背景颜色就没用,这个在有北京图片调用比较好
StaticText3=TransparentStaticText(panel, -1, '我是透明的', (10, 150))
StaticText3.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL))
StaticText3.SetBackgroundColour('red')
#StaticText3.Label="我是可以更改后的内容"#直接采用此方法可以更改透明文本框的内容
#这里是实现静态文本与鼠标交互的操作
StaticText4=wx.StaticText(panel, -1, '鼠标请进入我', (10, 170))
StaticText4.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.NORMAL))
StaticText4.SetBackgroundColour('pink')
#进入和离开控件函数的绑定
StaticText4.Bind(wx.EVT_LEAVE_WINDOW, self.Leave_Text)
StaticText4.Bind(wx.EVT_ENTER_WINDOW, self.Enter_Text)
#鼠标单击控件
StaticText4.Bind(wx.EVT_LEFT_DOWN, self.Click_Text)
#进入静态文本控件的函数处理
def Click_Text(self,event):
print("正在左键单击单击:"+event.GetEventObject().GetLabel())
#进入静态文本控件的函数处理
def Enter_Text(self,event):
print("已经进入:"+event.GetEventObject().GetLabel())
print(event.GetEventObject().GetPosition())#得到这个控件的位置
print(event.GetEventObject().GetSize())#得到这个控件的大小
event.GetEventObject().Label="鼠标请离开我"
# 离开静态文本控件的函数处理
def Leave_Text(self,event):
print("已经离开:"+event.GetEventObject().GetLabel())
print(event.GetEventObject().GetPosition())#得到这个控件的位置
print(event.GetEventObject().GetSize())#得到这个控件的大小
event.GetEventObject().Label="鼠标请进入我"
app = wx.App()
#设置窗口不可以由用户改变
style=wx.DEFAULT_FRAME_STYLE^wx.MAXIMIZE_BOX^wx.RESIZE_BORDER^wx.MINIMIZE_BOX
frame = MyFrame(None,title="StaticText例程",style=style,size=(700,550))
frame.Show()
app.MainLoop()
#透明静态文本参考链接:https://blog.csdn.net/zy0412326/article/details/102928274
#文本框格式参考链接:http://codingdict.com/article/9441