wxpython,wxwidgets双缓冲防止闪烁

wxwidgets中提供了BufferedPaintDC,这个类自动帮你完成了后台缓冲dc到前台dc的过程,你不需要想使用MemoryDC那样,在meorydc画完之后再来一次拷贝。

但是我发现不管用了BufferedPaintDC,还是用了MemoryDC的方式,都是没有效果。

后来去官网看了一下,原来是少了这一句:

SetBackgroundStyle(wxBG_STYLE_CUSTOM)

版权所有,更多... “wxpython,wxwidgets双缓冲防止闪烁”

关于wxpython或者wxwidgets中EVT_PAINT没有被调用问题

案例:

在windows下面重载StaticBitmap的EVT_PAINT事件的响应函数,结果没有问题,响应函数被调用。但是同样的代码在linux下面,发现响应函数从来没有被调用过。

解决办法:

父类改为Window这个类。

原因:

wxwidgets调用的是本地的控件库,因为windows,linux,mac上面本地控件库是不一样的。因此行为也不一样。一般继承字wxControl的类会有这样的问题。所以… 更多... “关于wxpython或者wxwidgets中EVT_PAINT没有被调用问题”

python vs pythonw

python解释器有2个版本,一个是python,另外一个是pythonw。那它们之间有什么区别呢?什么情况下用python什么情况下用pythonw?

先做个小实验,写2个小程序,一个只是输出字符串,一个GUI程序。

* 输出字符串程序 – console.py

import os

print 'Current platform is ', os.name

input=raw_input()
print input
更多... “python vs pythonw”

一个python的控件库

http://xoomer.virgilio.it/infinity77/AGW_Docs/gallery.html

如果你使用的wxpython版本低于2.8.9.2, 就去这个网站下载对应的控件的源文件。如果高于等于的话,直接使用

import wx.lib.agw

下面是官网的说明和一个例子。

这里说下怎么查看你的wxpython的版本,假设你在windows下面,

打开cmd

进入python的shell… 更多... “一个python的控件库”

wxpython的事件列表

你可以使用下列的脚本得到所有的事件:

import wx

for x in wx:

    if ( x.startswith(‘EVT_’):

        print x

就可以打印出所有的事件:

  • EVT_ACTIVATE
  • EVT_ACTIVATE_APP
  • EVT_BUTTON
  • EVT_CALCULATE_LAYOUT
  • EVT_CHAR
  • EVT_CHAR_HOOK
  • EVT_CHECKBOX
  • EVT_CHECKLISTBOX
  • EVT_
更多... “wxpython的事件列表”

把python程序打包成exe

python通常可以直接使用python的解释器执行脚本。

但是如果我们自己的写的代码直接这样发布出去的话,不就把源代码也发布出去了吗。虽然你也编译成pyc之类的,但是经过一个简单的步骤一样可以看到源代码。

如果能把我们所有的源代码编程成一个exe,这个问题就解决了。

有几个工具能做这个事情,其中较为好用的是pyinstaller,py2exe。

pyinstaller

www.pyinstaller.co… 更多... “把python程序打包成exe”