wxPython: 簡單的繪圖例子
一個繪圖的例子:
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Function:繪圖 Input:NONE Output: NONE author: socrates blog:http://www.cnblogs.com/dyx1024/ date:2012-07-11 ''' import wx class PaintWindow(wx.Window): def __init__(self, parent, id): wx.Window.__init__(self, parent, id) self.SetBackgroundColour("Red") self.color = "Green" self.thickness = 10 #建立一個畫筆 self.pen = wx.Pen(self.color, self.thickness, wx.SOLID) self.lines = [] self.curLine = [] self.pos = (0, 0) self.InitBuffer() #連線事件 self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) self.Bind(wx.EVT_MOTION, self.OnMotion) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_IDLE, self.OnIdle) self.Bind(wx.EVT_PAINT, self.OnPaint) def InitBuffer(self): size = self.GetClientSize() #建立快取的裝置上下文 self.buffer = wx.EmptyBitmap(size.width, size.height) dc = wx.BufferedDC(None, self.buffer) #使用裝置上下文 dc.SetBackground(wx.Brush(self.GetBackgroundColour())) dc.Clear() self.DrawLines(dc) self.reInitBuffer = False def GetLinesData(self): return self.lines[:] def SetLinesData(self, lines): self.lines = lines[:] self.InitBuffer() self.Refresh() def OnLeftDown(self, event): self.curLine = [] #獲取滑鼠位置 self.pos = event.GetPositionTuple() self.CaptureMouse() def OnLeftUp(self, event): if self.HasCapture(): self.lines.append((self.color, self.thickness, self.curLine)) self.curLine = [] self.ReleaseMouse() def OnMotion(self, event): if event.Dragging() and event.LeftIsDown(): dc = wx.BufferedDC(wx.ClientDC(self), self.buffer) self.drawMotion(dc, event) event.Skip() def drawMotion(self, dc, event): dc.SetPen(self.pen) newPos = event.GetPositionTuple() coords = self.pos + newPos self.curLine.append(coords) dc.DrawLine(*coords) self.pos = newPos def OnSize(self, event): self.reInitBuffer = True def OnIdle(self, event): if self.reInitBuffer: self.InitBuffer() self.Refresh(False) def OnPaint(self, event): dc = wx.BufferedPaintDC(self, self.buffer) def DrawLines(self, dc): for colour, thickness, line in self.lines: pen = wx.Pen(colour, thickness, wx.SOLID) dc.SetPen(pen) for coords in line: dc.DrawLine(*coords) def SetColor(self, color): self.color = color self.pen = wx.Pen(self.color, self.thickness, wx.SOLID) def SetThickness(self, num): self.thickness = num self.pen = wx.Pen(self.color, self.thickness, wx.SOLID) class PaintFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent, -1, "Panit Frame", size = (800, 600)) self.paint = PaintWindow(self, -1) if __name__ == '__main__': app = wx.PySimpleApp() frame = PaintFrame(None) frame.Show(True) app.MainLoop()
測試:
相關推薦
wxPython: 簡單的繪圖例子
一個繪圖的例子: #!/usr/bin/env python # -*- coding: utf-8 -*- ''' Function:繪圖 Input:NONE Output: NONE author: socrates blog
wxpython繪圖例子(避免視窗閃爍)
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Function:繪圖 Input:NONE Output: NONE author: socrates blog:http://ww
php實現socket簡單的例子
返回 ets false 類型 註釋 err content 初始化 字符 一、Socket簡介 1、socket只不過是一種數據結構 2、使用這個socket數據結構去開始一個客戶端和服務器之間的會話 3、服務器是一直在監聽準備產生一個新的會話。當一個客戶端連接服務端,它
【4】 簡單繪圖(二)
dispose alt draw bsp rom 形狀 .html yellow tex 在上一篇裏已經向大家介紹了如何使用GDI+繪制簡單的圖像,這一篇繼續向大家介紹其它一些繪圖知識. 1.首先我們來看下上一篇中我們使用過的Pen. Pen的屬性主要有: Color(顏色
css一些簡單的例子
加載 加載順序 http purple 20px adding expire sheet 傳輸協議 1.http協議 1 一:HTTP協議:hypertext transport protocol(超文本傳輸協議) 2 特點: 3 1.請求
scrapy的學習之路1(簡單的例子)
strong os.path pro tle text arch try mobile pip scrapy的安裝 環境:python3.6 1 pip install -i https://pypi.douban.com/simple/ scrapy 2
spring boot Thymeleaf模板引擎 最簡單輸出例子
test leaf att map 控制器 輸出 span blog hello spring boot Thymeleaf模板引擎 最簡單輸出例子 控制器代碼如下: @GetMapping(value = "/test")public String test(Mo
SpringBoot整合Swagger2簡單的例子
設定 tro -c fault rip comment sed itl java Swagger 是一個規範和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統作為服務器以同樣的速度來更新。文件的方法,參數和模型緊密
Struts2的配置和一個簡單的例子
ring public return tsp 正在 瀏覽器 使用 javassist github Struts2的配置和一個簡單的例子 筆記倉庫:https://github.com/nnngu/LearningNotes 簡介 這篇文章主要講如何在 IntelliJ
用一個簡單的例子比較SVM,MARS以及BRUTO(R語言)
err r語 模型訓練 n! 也有 kernel 訓練 tps mea 背景重述 本文是ESL: 12.3 支持向量機和核中表12.2的重現過程。具體問題如下: 在兩個類別中產生100個觀測值。第一類有4個標準正態獨立特征\(X_1,X_2,X_3,X_4\)。第二類也有四
《Kubernetes權威指南第2版》學習(二)一個簡單的例子
stop 輸入 rtu gist 用戶名 server 遠程 dock netstat 1: 安裝VirtualBox, 並下載CentOS-7-x86_64-DVD-1708.iso, 安裝centOS7,具體過程可以百度。 2:開啟centOS的SSH, 步驟如下:
STL_map.VC6簡單使用例子
sin std 使用 any for 字符 warn UNC include 1、 #include <windows.h> //使用map時會出現如下警告:主要意思是 identifier was truncated to ‘255‘ characters
一個簡單的例子搞懂ES6之Promise
準備工作 實現 查看 AS spa div 原理 事件 例子 ES5中實現異步的常見方式不外乎以下幾種: 1. 回調函數 2. 事件驅動 2. 自定義事件(根本上原理同事件驅動相同) 而ES6中的Promise的出現就使得異步變得非常簡單。promise中的異步是這
用最簡單的例子說明設計模式(三)之責任鏈、建造者、適配器、代理模式、享元模式
def dap CA 抽象 創建 tcl cte clas eth 責任鏈模式 一個請求有多個對象來處理,這些對象是一條鏈,但具體由哪個對象來處理,根據條件判斷來確定,如果不能處理會傳遞給該鏈中的下一個對象,直到有對象處理它為止 使用場景 1)有多個對象可以處理同
socket編程——一個簡單的例子
google tdi 本地 及其 link 討論 pac 關閉連接 stdio.h 1、網絡中進程之間如何通信? 本地的進程間通信(IPC)有很多種方式,但可以總結為下面4類: 消息傳遞(管道、FIFO、消息隊列) 同步(互斥量、條件變量、讀寫鎖、文件和寫記錄鎖、信
數據分析,簡單繪圖
matplot mat 折線 lib 散點 線圖 atp 子圖 .py import matplotlib.pylab as pb #matplotlib模塊下pylab可以繪制相應的散點圖,折線圖,直線圖,子圖 #而subplot是繪制簡單的子圖,他是根據你提供相應的數據
一個簡單的例子區分linux shell 正則表達式中的 *,+,?
-s span TE 的區別 entos oot bar 一個 區分 1,linux shell 正則表達式 *和+號的區別例子記憶:[root@mycentos data]# touch test.txt[root@mycentos data]# cat>>t
c++類編程的兩個簡單的例子
function pointer efi AI == TP 數據 IT empty 關於棧的數據結構:類的頭文件定義 // stack.h -- class definition for the stack /*****************
一個簡單的例子
syn lan sea eth str 返回 row reflect 限制 考慮下面這個簡單的例子,讓我們看看 reflection 是如何工作的。 import java.lang.reflect.*; public class DumpMethods {
rocketmq-簡單入門例子
1、環境搭建快速開始 本章節主要詳細介紹如何在本地計算機上設定RocketMQ訊息系統以傳送和接收訊息. 在本章節 前置條件 下載發行版本並構建 啟動NAME SERVER服務 啟動BROKE服務 傳送並接收訊息 關閉服務 前置條件 假定安裝了以下軟體: 推薦64b