wxpython之StaticText最全介绍(持续更新)

转载请注明出处,本文作者:TEER,邮箱:[email protected]

本文是作者学习wxpython过程中的随笔,主要是StaticText的相关操作,本文会持续更新。

 

目录

一、各个部分代码介绍

1、StaticText的建立

2、StaticText文本字体大小、颜色、风格、斜体、字体背景颜色等操作

3、如何获得并且更改StaticText的文字内容,如何获得StaticText的大小以及位置

4、如何实现StaticText文本的透明

5、StaticText文本的多行显示

6、如何实现鼠标进入或者离开StaticText文本的显示

7、如何实现鼠标单击StaticText文本的显示

二、总的函数以及界面展示

1、界面展示:

2、代码:


一、各个部分代码介绍

1、StaticText的建立

调用格式: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)

2、StaticText文本字体大小、颜色、风格、斜体、字体背景颜色等操作

函数操作:

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')

3、如何获得并且更改StaticText的文字内容,如何获得StaticText的大小以及位置

用SetLabel()与GetLabel()函数可以实现替换和获得,或者直接使用StaticText.Label便可以得到文本内容,StaticText.Label=“”便可以实现替换文本的内容。

代码:

        #SetLabel可以设置更改文本的内容
        StaticText1=wx.StaticText(panel, -1, '我是原来的内容', (10, 70))
        StaticText1.SetLabel("我是更改之后的")
        StaticText1.Label = "我是更改之后的"#这种方式也可以更改静态文本内容

        #得到静态文本的内容
        print(StaticText1.GetLabel())
        print(StaticText1.Label)#另外一种方式

4、如何实现StaticText文本的透明

参考网络上其他人的博客介绍: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()

5、StaticText文本的多行显示

python中可以借助/n实现换行操作

        #\n可以用来静态文本换行,并且默认是自动调整文本的大小
        StaticText2=wx.StaticText(panel, -1, '第一行我很长的\n第二行\n第三行', (10, 90))
        StaticText2.SetForegroundColour((255, 0, 0))
        StaticText2.SetBackgroundColour('yellow')  # 设置背景颜色

6、如何实现鼠标进入或者离开StaticText文本的显示

主要是利用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="鼠标请进入我"

7、如何实现鼠标单击StaticText文本的显示

主要是利用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())

二、总的函数以及界面展示

1、界面展示:

wxpython之StaticText最全介绍(持续更新)_第1张图片

2、代码:

'''
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

 

你可能感兴趣的:(python,wxpython)