我将一些行放入列表控件中,然后相当快地更新它们 - 通常数据来自总线 - 并且整个列表闪烁很多。阻止它这样做真是太好了。
我尽可能地减少了代码,同时仍然保持我在下面的示例中所做的事情的总体外观。
lisctrl 是在 wx.Notebook 中还是在普通的 wx.Panel 中似乎并不重要,所以我把笔记本留在那里。
我已经开始研究双缓冲,但想看看是否还有其他可以先尝试的方法。
在 Windows 7 上使用 wxPython 2.8.12.1 执行此操作。XP 上也会发生。
import sys
import time
import logging
import wx
from random import randint
UPDATE_MS=10
class CanMsg(object):
def __init__(self, ID, type, len, data=None):
"""Represents a CAN message"""
self.ID=ID # 11/29-bit message identifier
self.MSGTYPE=type # Type of the message
self.LEN=len # Data Length Code of the message (0..8)
if data:
self.DATA=data
else:
self.DATA=[0,]*len
class EmulatorFrame(wx.Frame):
def __init__(self, parent, id, title, pos=wx.DefaultPosition, size=wx.DefaultSize, …Run Code Online (Sandbox Code Playgroud)