【问题标题】:WxPython StaticText dynamic updateWxPython StaticText 动态更新
【发布时间】:2013-02-05 22:37:51
【问题描述】:
def update_text(self, info):
        index = {
            "username":self.username,
            "online status":self.online_status,
            "dial status":self.dialing_status,
            "dtmf transfer number":self.DTMF_t_num,
            "dtmf number":self.DTMF_num,
            "program status":self.program_status,
            "credits":self.credits}
        text = index[info[0]]
        data = info[1]
        append = info[2]
        if append:
            current = text.GetLabel()
            text.SetLabel(current + " " +data)
        else:
            text.SetLabel(data)

为什么不更新它所指的 wx.StaticText? “索引”中的每个变量都引用静态文本。

【问题讨论】:

    标签: python user-interface wxpython


    【解决方案1】:

    没有一些可运行的代码很难说。我做了我自己的事情并让它发挥了作用:

    import random
    import wx
    
    ########################################################################
    class MyPanel(wx.Panel):
        """"""
    
        #----------------------------------------------------------------------
        def __init__(self, parent):
            """Constructor"""
            wx.Panel.__init__(self, parent)
    
            self.username = wx.StaticText(self, label="username")
            self.online_status = wx.StaticText(self, label="offline")
            self.dialing_status = wx.StaticText(self, label="no dial tone")
    
            btn = wx.Button(self, label="Update")
            btn.Bind(wx.EVT_BUTTON, self.onUpdate)
    
            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.Add(self.username, 0, wx.ALL, 5)
            sizer.Add(self.online_status, 0, wx.ALL, 5)
            sizer.Add(self.dialing_status, 0, wx.ALL, 5)
            sizer.Add(btn, 0, wx.ALL, 5)
            self.SetSizer(sizer)
    
        #----------------------------------------------------------------------
        def update_text(self, info):
            """"""
            index = {
                "username":self.username,
                "online status":self.online_status,
                "dial status":self.dialing_status
                }
            text = index[info[0]]
            data = info[1]
            append = info[2]
            if append:
                current = text.GetLabel()
                text.SetLabel(current + " " + data)
            else:
                text.SetLabel(data)
    
        #----------------------------------------------------------------------
        def onUpdate(self, event):
            """"""
            info = random.choice(
                [("username", "mork89", 1),
                 ("online status", "online", 0),
                 ("dial status", "dialing", 1)
                 ])
            self.update_text(info)
    
    ########################################################################
    class MainFrame(wx.Frame):
        """"""
    
        #----------------------------------------------------------------------
        def __init__(self):
            """Constructor"""
            wx.Frame.__init__(self, None, title="Dynamic StaticText")
            panel = MyPanel(self)
            self.Show()
    
    if __name__ == "__main__":
        app = wx.App(False)
        frame = MainFrame()
        app.MainLoop()
    

    也许我的代码会帮助你弄清楚你的。

    【讨论】:

    • 最有帮助,但我仍然看不出你所做的与我所做的有什么不同!太刺激了!
    • 我也不知道。发布一个可运行的小型问题示例总是一个好主意。
    猜你喜欢
    • 2011-03-21
    • 2011-07-09
    • 2010-09-22
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多