wxpython 控件 TextCtrl 影响静态文本显示问题

wxpython 控件 TextCtrl 影响静态文本显示问题

问题描述:

一、问题描述:

我先写了一个 静态文本 放进 【BoxSizer__垂直分布】, 然后 再写了一个 TextCtrl 控件, 但 控件显示, 有时候会在静态文本上出现

二、图示:

 

三、代码:

""" 制作 一个 简易的 计算器 """
import wx
import time
from 项目实践.工具.my_tool import App


# Frame 框架类
class Frame(wx.Frame):
    def __init__(self):
        # 初始化
        wx.Frame.__init__(self, parent=None, id=-1, title='计算器', size=(300, 500))

        self.panel = wx.Panel(self)
        self.box_mag()
        # --- 固定搭配
        self.Center()
        self.Show()

    # 1. 标题
    def show_title(self):
        # 1. 创建静态文本
        title = wx.StaticText(parent=self.panel, id=-1, label='简易计算器', )

        # 2. 文本设置字体样式
        font = wx.Font(20, wx.FONTFAMILY_ROMAN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
        title.SetFont(font)

        return title

    # 1. 显示
    def show_res(self):
        res = wx.TextCtrl(self.panel, id=-1, value='0', size=(200, 30), style= wx.TE_LEFT | wx.TE_NOHIDESEL | wx.TE_READONLY,name='结果显示框')
        return res

    # 容器管理
    def box_mag(self):
        # 0. 创建管理器
        box_sizer = wx.BoxSizer(wx.VERTICAL)

        # 1. 标题
        box_sizer.Add(self.show_title(), flag=wx.ALIGN_CENTER | wx.ALL, border=30)

        # 2. 显示
        box_sizer.Add(self.show_res(), flag=wx.ALIGN_CENTER | wx.ALL, border=50)


        # 2. 操作

        # 2. 设置管理器
        self.panel.SetSizer(box_sizer)

class App(wx.App):
    def __init__(self, frame_class):
        super(self.__class__, self).__init__()
        frame = frame_class()

        # 设置为顶层框架
        self.SetTopWindow(frame)

        # 一直检测 事件
        self.MainLoop()

    def OnExit(self):
        return True


if __name__ == '__main__':
    App(Frame)

使用布局管理器时,一般SetSizer()之后,需要Layout(),才能避免题主所说的问题(如下图所示)。