import wx
import random class View(wx.Panel):
def __init__(self, parent):
super(View, self).__init__(parent)
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
self.Bind(wx.EVT_PAINT, self.on_paint)
self.Bind(wx.EVT_SIZE, self.on_size)
def on_size(self, event): # OnSize时重画很棒,但无法应付部分覆盖
event.Skip() # 好像这句话也没起作用
self.Refresh()
def on_paint(self, event):
dc = wx.AutoBufferedPaintDC(self)
dc.SetPen(wx.Pen('RED')) for i in range(100):
w, h = self.GetSize()
x = random.randint(1, w-1)
y = random.randint(1, h-1)
dc.DrawCircle(x, y, 5)
# self.Refresh() # 如果加上这句,相当于自己调用自己,无线更新 class Frame(wx.Frame):
def __init__(self):
super(Frame, self).__init__(None)
self.SetTitle('My Title')
self.SetClientSize((500, 500))
self.Center()
self.view = View(self) def main():
app = wx.App(False)
frame = Frame()
frame.Show()
app.MainLoop() if __name__ == '__main__':
main()

1000个圆点与PaintDC的使用,OnSize时重画很棒的更多相关文章

  1. 全能,OnSize的使用,部分覆盖后重画,都没有问题

    import wx class View(wx.Panel): def __init__(self, parent): super(View, self).__init__(parent) self. ...

  2. [AIR] 在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持

    转自:http://www.adobe.com/cn/devnet/air/articles/multiple-screen-sizes.html 无论是改编原本在浏览器 Flash Player 中 ...

  3. VC中实现带有背景位图的树型控件

    当前许多应用程序都在使用树型控件时为其添加了背景位图,增强的控件的魅力,然而对于Visual C++编程爱好者来说,使用Visual C++MFC提供的树型控件(CTreeCtrl)本身就是一个难点, ...

  4. 转 C# GDI+ 实现橡皮筋技术

    http://www.cnblogs.com/arxive/p/6080085.html 应该有很多人都在寻找这方面的资料,看看下面我做的,或许对你会有所帮助,但愿如此. 为了实现橡皮筋技术,我用了两 ...

  5. canvas游戏小试:画一个按方向键移动的圆点

    canvas游戏小试:画一个按方向键移动的圆点   自己对canvas,但又有一颗做游戏的心TT.然后记录一下对canvas的学习吧,用一个按方向键控制的小圆点来做练习.(编程时用了一些es6的语法) ...

  6. Android使用ViewPager做轮播

    ViewPager.html div.oembedall-githubrepos { border: 1px solid #DDD; list-style-type: none; margin: 0 ...

  7. wxPython:事件

    事件──── 是每个 GUI 应用不可舍割的一部分,因为所有的 GUI 应用程序都是基于事件驱动的.从 GUI 程序启动开始,它就回应同户的不同类型的事件.除了用户,也有其它因素可以产生事件,例如:互 ...

  8. 自定义View(二)ViewPage广告轮播

    自定义View的第二个学习案例,使用ViewPage实现广告轮播,通过组合现有的View实现效果如下: 有关ViewPage使用可以学习谷歌官方API,和训练案例: 1.使用ViewPage实现屏幕滑 ...

  9. MFC编程入门

    一. 什么是MFC? 如果你要建立一个Windows应用程序,应该如何下手? 好的开端是从设计用户界面开始. 首先,你要决定什么样的用户能使用该程序并根据需要来设置相应的用户界面对象.Windows用 ...

随机推荐

  1. Fennec VS. Snuke --AtCoder

    题目描述 Fennec and Snuke are playing a board game.On the board, there are N cells numbered 1 through N, ...

  2. wireshark学习笔记

    之前写过一篇博客:用 Fiddler 来调试HTTP,HTTPS. 这篇文章介绍另一个好用的抓包工具wireshark, 用来获取网络数据封包,包括http,TCP,UDP,等网络协议包. 记得大学的 ...

  3. HDU1969

    记得用PI=acos(-1)反三角函数求,用一次排序,然后二分和贪心 #include<iostream> #include<algorithm> #include<io ...

  4. 3D立体显示技术原理与游戏应用历程简介 【转】

    本文来自 中关村ZOL 「3D 立体显示」可说是近来娱乐产业相当热门的话题,不但有好莱坞推出<阿凡达>等卖座 3D 立体电影,全球各大家电厂商也积极布局准备推出一系列支持 3D 立体显示的 ...

  5. oracle如何获得新插入记录的id

    .对于提交(最后一次操作commit了)的话可以查询那个提交段 SELECT 列名1,列名2…… FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAX ...

  6. nginx/iptables动态IP黑白名单实现方案

    nginx/iptables动态IP黑白名单实现方案 一.手动封IP步骤 1.Nginx手动封IP 1.获取各个IP访问次数 awk '{print $1}' nginx.access.log |so ...

  7. tomcat启动项目,起不起来

    右键tomcat 选择publish

  8. 使用Python+Selenium过程中中常见的问题汇总

    1.提示:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 542: ordinal not in range( ...

  9. Linux中运行c程序,与系统打交道

    例一:system系统调用是为了方便调用外部程序,执行完毕后返回调用进程. #include <stdio.h> #include <stdlib.h> main() { pr ...

  10. vscode 编译调试c/c++的环境配置

    首先看了一下别人写的文章 http://blog.csdn.net/c_duoduo/article/details/51615381 在按照上文链接博主的安装步骤进行到MINGW的安装时出现一个问题 ...