小部件出现在一个奇怪的位置,直到在 wxpython 中触摸屏幕

widgets appear in a weird position until the screen is touched in wxpython

我刚开始使用 wxpython,我构建了一个代码,用他从 pubsub 获得的数字编写一条消息,但是当我到达该面板时,该特定消息出现在一个奇怪的位置,直到我更改应用程序的分辨率然后它又回来了

面板代码为:

class ChangeNumStationPanel(wx.Panel):
def __init__(self, parent, frame):
    wx.Panel.__init__(self, parent, pos=wx.DefaultPosition,
                      size=(1000,800),
                      style=wx.SIMPLE_BORDER)

    self.frame = frame
    self.parent = parent
    self.SetBackgroundColour(wx.LIGHT_GREY)

    sizer = wx.BoxSizer(wx.VERTICAL)

   
    # current num box
    currentNum_box = wx.BoxSizer(wx.HORIZONTAL)

    self.currentNum_Text = wx.StaticText(self, 1, label="")

    currentNum_box.Add(self.currentNum_Text, 0, wx.CENTER, 5)

    # subscribe to pubsub to know current num of station per message
    pub.subscribe(self.change_current, "current_changer")

   
    sizer.Add(currentNum_box,0, wx.CENTER, 5)

  

    self.SetSizer(sizer)
    self.Layout()
    self.Hide()


def change_current(self, currentNum):
    """

    :param currentNum: current number of station per message
    :return: changes the label according to the number
    """

    self.currentNum_Text.SetLabel("Current number of station per message: " + currentNum)

出现奇怪的文本是“每条消息的当前站数:” 很抱歉,如果我解释得不够好,如果您不明白,请问我,我会尽力帮助您理解,以便您能帮助我:)

消息的呈现方式:

您可以看到文本不在中心...但是在我移动应用程序后,文本神奇地回到了中心。

更新标签中的文本后,只需在面板上添加 Layout() 方法即可。直到调用面板才意识到它的内容已经改变并且 sizer 需要 re-caclulating

def change_current(self, currentNum):
    """

    :param currentNum: current number of station per message
    :return: changes the label according to the number
    """

    self.currentNum_Text.SetLabel("Current number of station per message: " + currentNum)
    self.Layout()