Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxPython连续更新面板_Python_User Interface_Wxpython - Fatal编程技术网

wxPython连续更新面板

wxPython连续更新面板,python,user-interface,wxpython,Python,User Interface,Wxpython,我是wxPython的新手,一个问题也解决不了。我需要不断地用时钟值更新面板。我有一个解决方案,但在这种情况下,我无法正常关闭窗口(alt+f4不起作用)。 我也不明白.Update.Refresh和何时调用.Destroy之间有什么区别 有人能推荐一本好书《如何在wxPython中编程》吗? 谢谢你的帮助 class TimeDatePanel(wx.Panel): def __init__(self, parent, ID=ID_TIMEDATE, pos=wx.DefaultPositio

我是wxPython的新手,一个问题也解决不了。我需要不断地用时钟值更新面板。我有一个解决方案,但在这种情况下,我无法正常关闭窗口(alt+f4不起作用)。 我也不明白.Update.Refresh和何时调用.Destroy之间有什么区别

有人能推荐一本好书《如何在wxPython中编程》吗? 谢谢你的帮助

class TimeDatePanel(wx.Panel):
def __init__(self, parent, ID=ID_TIMEDATE, pos=wx.DefaultPosition, size=(50, 50), controller=None):
    wx.Panel.__init__(self, parent, ID, pos, size, wx.RAISED_BORDER)
    self.controller = controller
    transCoded = controller.transCodes
    layout = wx.GridSizer(5,2,0,10)
    layout.Add(wx.StaticText(self, wx.ID_ANY, transCoded.get("Time & Date")))
    layout.Add(wx.StaticText(self, wx.ID_ANY, ""), 0,flag=wx.ALL)
    layout.Add(wx.StaticText(self, wx.ID_ANY, transCoded.get("Local time")), 0,flag=wx.ALL|wx.ALIGN_RIGHT)
    self.LT = wx.StaticText(self, wx.ID_ANY, "")
    layout.Add(self.LT)
    layout.Add(wx.StaticText(self, wx.ID_ANY, transCoded.get("UTC")), 0,flag=wx.ALL|wx.ALIGN_RIGHT)
    self.UTC = wx.StaticText(self, wx.ID_ANY, "")
    layout.Add(self.UTC)
    layout.Add(wx.StaticText(self, wx.ID_ANY, transCoded.get("Julian day")), 0,flag=wx.ALL|wx.ALIGN_RIGHT)
    self.JD = wx.StaticText(self, wx.ID_ANY, "")
    layout.Add(self.JD)
    layout.Add(wx.StaticText(self, wx.ID_ANY, transCoded.get("Local sidereal time")), 0,flag=wx.ALL|wx.ALIGN_RIGHT)
    self.LST = wx.StaticText(self, wx.ID_ANY, "")
    layout.Add(self.LST)
    self.SetSizer(layout)
    self.updateTimeDate()
    self.Fit()

    wx.EVT_PAINT(self, self.onPaint)

def onPaint(self, event=None):
    self.updateTimeDate()

def updateTimeDate(self):
    mechanics = self.controller.mechanics
    self.LT.SetLabel(str(mechanics.getLT()))
    self.UTC.SetLabel(str(mechanics.getUTC()))
    self.JD.SetLabel(str(mechanics.getYD()))
    self.LST.SetLabel(str(mechanics.getLST()))

如果您需要经常更新时钟,为什么不使用模拟时钟、LEDNumberCtrl或者使用wx.Timer更新的TimeCtrl呢?以下教程将帮助您使用计时器部件:

前两个小部件自我更新。当静态文本控件或其他普通小部件的值静止时,应该调用Update、Refresh或Layout。只需使用SetValue或SetLabel即可

罗宾·邓恩(Robin Dunn)有一本名为《wxPython in Action》(wxPython in Action)的旧书,这本书在很大程度上仍然很棒。科迪·普雷科德(Cody Precord)今年出版了一本wxPython烹饪书