繁体   English   中英

wxPython 持续更新面板

[英]wxPython continiuouly update panel

我是 wxPython 的新手,无法解决一个问题。 我需要用时钟值不断更新面板。 我有一个解决方案,但在这种情况下,我通常无法关闭 window(alt+f4 不起作用)。 另外我不明白应该调用.Update.Refresh 和when.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()))

如果您需要经常更新时钟,为什么不使用 AnalogClock、LEDNumberCtrl 或者可能是使用 wx.Timer 更新的 TimeCtrl? 以下教程将帮助您使用计时器部分: http://www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/

前两个小部件会自行更新。 当您 rest 为 StaticText 控件或其他普通小部件的值时,您应该必须调用更新、刷新或布局。 只需使用 SetValue 或 SetLabel 代替。

Robin Dunn 有一本名为“wxPython in Action”的旧书,大部分内容仍然很棒。 Cody Precord 今年还出版了一本 wxPython Cookbook。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM