2009-02-24 28 views
10

Tôi đang làm việc trên một ứng dụng đa nền tảng với wxpython và tôi đã gặp sự cố nhấp nháy trên cửa sổ, trong khi vẽ trên Bảng điều khiển. tôi đã sử dụng để vẽ trên một bộ đệm (wx.Bitmap) trong quá trình chuyển động chuột sự kiện và phương thức OnPaint của tôi được sáng tác chỉ trên đường dây:Bộ đệm đôi với wxpython

dc = wx.BufferedPaintDC(self, self.buffer) 

Khá tiêu chuẩn nhưng vẫn tôi đã nhấp nháy vấn đề trên Windows, trong khi tất cả mọi thứ đã làm việc tốt trên Linux.

Tôi giải quyết được sự cố của mình gọi SetDoubleBuffered(True) theo phương thức __init__.

Điều kỳ lạ là bây giờ mọi thứ hoạt động ngay cả khi tôi không sử dụng BufferedPaintDC nữa. Tôi đã thay đổi ứng dụng của mình sao cho tất cả phần vẽ được thực hiện theo phương pháp OnPaint. Tôi không sử dụng một bộ đệm và bản vẽ được thực hiện trực tiếp trên một wx.PaintDC không có vấn đề nhấp nháy ở tất cả.

Vì vậy, câu hỏi của tôi là: BufferedPaintDC hoàn toàn vô dụng? Hoặc không được chấp nhận bằng cách nào đó? Tôi là chủ sở hữu của cuốn sách "WxPython in Action" (2006) và thậm chí nó không đề cập đến SetDoubleBuffered

Trả lời

5

Có khả năng cao là SetDoubleBuffered thực sự làm cho bảng điều khiển của bạn sử dụng bộ đệm tự động dc, tài liệu không đề cập đến những lớp học đó không được chấp nhận (và tôi nghĩ rằng chúng sẽ xảy ra nếu trường hợp đó xảy ra).

Giới thiệu về wxPython trong Hành động ... 2006 là một thời gian dài trước đây ... có thể là phương pháp SetDoubleBuffered không tồn tại trở lại sau đó hoặc tác giả muốn hiển thị cách mọi thứ hoạt động ở cấp thấp hơn.

Các vấn đề liên quan