wxPython实现的画图板

wxpython入门第八步(画图) wxPython graphics GDI(Graphics Device Interface,图形设备接口)是一个与图形工作的接口,用于与显示器、打印机或文件等图形设备交互。它用于与显示器、打印机或文件等图形设备进行交互。GDI允许程序员在屏幕或打印机上显示数据,而不必关注特定设备的细节。GDI将程序员与硬件隔离开来。 从程序员的角度来看,GDI是一组用于处理图形的类和方法。GDI由二维矢量图形、字体和图像组成。 要开始绘制图形,我们必须创建一个设备上下文(DC)对象。在 wxPython 中,设备上 阅读详情

#coding:GBK
'''
Created on 2012-3-22

@author: cWX53049
'''
import wx
import time
from bsddb.test.test_pickle import cPickle
import os

_formatStr="%Y-%m-%d %H:%M:%S"

class SkethWindow(wx.Window):


    def __init__(self,parent,ID):
        wx.Window.__init__(self,parent,ID)
        self.SetBackgroundColour("White")
        self.color="Black"
        self.thickness=1
        self.pen=wx.Pen(self.color,self.thickness,wx.SOLID)#创建一个pen
        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_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#处理一个resize事件
    def OnIdle(self,event):
        if self.reInitBuffer:
            self.InitBuffer()
            self.Refresh()
    def OnPaint(self,event):
        wx.BufferedPaintDC(self,self.buffer)
    def DrawLines(self,dc):
        for colur,thickness,line in self.lines:
            pen = wx.Pen(colur,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 SkethFrame(wx.Frame):
    def __init__(self,parent):
        self.title="绘画窗体"
        wx.Frame.__init__(self,parent,-1,self.title,size=(500,500))
        self.sketh=SkethWindow(self,-1)
        self.InitStatusBar()
        self.sketh.Bind(wx.EVT_MOTION, self.showPosition)
        self.initMenuBar()
        self.wildcard="Sketch file(*.sketch)|All  files(*.*)|*.*"
        self.fileName=""
        
    def OnNew(self,event):
        pass
    def OnOpen(self,event):
        pass
    def OnSave(self,event):
        if not self.fileName:
            self.OnSaveAs(event)
        else:
            self.SaveFile()
            
    def SaveFile(self):
        if self.fileName:
            data = self.sketh.GetLinesData()
            f = open(self.fileName,'w')   
            cPickle.dump(data, f)
            f.close()
    def OnSaveAs(self,event):
        dlf = wx.FileDialog(self,"Sketch file",os.getcwd(),style=wx.SAVE|wx.OVERWRITE_PROMPT)
        if dlf.ShowModal()==wx.ID_OK:
            fileName = dlf.GetPath()
            if not os.path.splitext(fileName)[1]:
                fileName=fileName+'.sketch'
                self.fileName=fileName 
                self.SaveFile()
        self.SetTitle(self.title+'--'+self.fileName)
        dlf.Destroy()                      
    def OnColor(self,event):
        pass
    def OnCloseWindow(self,event):
        self.Destroy()    
    def menuData(self):
        return [("&File",(
                 ("&New","New Sketch file",self.OnNew),
                 ("&Open","open sketch file",self.OnOpen),
                 ("&Save","save sktech file",self.OnSave),
                 ("","",""),
                 ("&Color",(
                 ("&Black","",self.OnColor,wx.ITEM_RADIO),
                  ("&Red","",self.OnColor,wx.ITEM_RADIO),
                  ("&Red","",self.OnColor,wx.ITEM_RADIO),
                  ("&Blue","",self.OnColor,wx.ITEM_RADIO))),
                  ("","",""),
                  ("&Quit","quit sketch ",self.OnCloseWindow)))]   

    def initMenuBar(self):
        menuBar=wx.MenuBar()
        for eachMenu in self.menuData():
            eachMenuLabel = eachMenu[0]
            eachMenuItems = eachMenu[1]
            menuBar.Append(self.createMenu(eachMenuItems),eachMenuLabel)
        self.SetMenuBar(menuBar)     
     
    def createMenu(self,menuData):
        menu = wx.Menu()
        for eachMenu in menuData:
            if len(eachMenu)==2:
                label = eachMenu[0]
                subBar =self.createMenu(eachMenu[1]) 
                menu.AppendMenu(wx.NewId(),label,subBar)
            else:
                self.createMenuItem(menu,*eachMenu)
        return menu
    
    def createMenuItem(self,menu,label,status,handler,kind=wx.ITEM_NORMAL):
        if not label:
            menu.AppendSeparator()
            return
        menuItem=menu.Append(-1,label,status,kind)
        self.Bind(wx.EVT_MENU,handler,menuItem)        
            
            
    def InitStatusBar(self):
        self.statusBar=self.CreateStatusBar()
        self.statusBar.SetFieldsCount(4)
        self.statusBar.SetStatusWidths([-1,-2,-2,-2])
        self.timer=wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.updateTime, self.timer)
        self.timer.Start(1000)
        self.statusBar.SetStatusText("Time is %s"%time.strftime(_formatStr,time.localtime()),3)
        self.statusBar.SetStatusText("Pos (0,0)",1)
        self.statusBar.SetStatusText("Cur Line 0",2)
        self.statusBar.SetStatusText("Lines 0" ,3)
        
        
    def showPosition(self,event):
        self.statusBar.SetStatusText("Pos %s"%str(event.GetPositionTuple()),0)
        self.statusBar.SetStatusText("Cur Line %s"%len(self.sketh.curLine),1)
        self.statusBar.SetStatusText("Lines %s"%len(self.sketh.lines),2)
        event.Skip()  
            
    def updateTime(self,event):
        self.statusBar.SetStatusText("Time is %s"%time.strftime(_formatStr,time.localtime()),3)
         
           
if __name__=="__main__":
    app = wx.PySimpleApp(False)
    frame=SkethFrame(None)
    frame.Center()
    frame.Show(True)
    app.MainLoop()        
                     
                           
           




        
wxPython写的类似qq截图的小程序 立即下载

相关推荐

wxPython实现画图板

主要为大家详细介绍了wxPython实现画图板,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

wxPython绘制相关图形

参考链接:http://blog.youkuaiyun.com/tony_wong/article/details/17735999http://blog.youkuaiyun.com/webzhuce/article/details/72598876https://www.yiibai.com/wxpython/wxpython_drawing_api.htmlhttp://blog.sina.com.cn/s/blo...

winycg的博客 2485

wxPython绘图模块wxPyPlot实现数据可视化

主要为大家详细介绍了wxPython绘图模块wxPyPlot实现数据可视化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

wxpython 实现简易画板(1)

wxPython 实现一个简易画板

我是002的博客 1092

wxPython实现绘图小例子

主要为大家详细介绍了wxPython实现绘图小例子,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

RAG——从0到1快速搭建RAG应用

本文介绍了基于LangChain框架构建RAG(检索增强生成)应用的技术方案,涵盖核心模块选型与实现流程。技术栈包括:LangChain应用框架、pypdf文档解析、RecursiveCharacterTextSplitter文本分块、bge-small-zh-v1.5向量模型、Faiss向量库和通义千问大模型。文章详细说明了开发环境配置步骤,包括虚拟环境创建、依赖库安装和模型下载。核心代码分为索引、检索、生成三大流程,索引流程完成PDF文档解析、分块和向量化存储;检索流程实现查询向量化和相似度匹配;生成流

小志的博客 589

wxpython图形编程_wxpython & 图像编程

1)目前遇到一个问题,就是wxpython显示一个图片,然后可以在图片上画矩形,点,line,circle and soon,最后保存矩形的坐标.但是现在可以在屏幕上画矩形,无法在图片上做标记,我反思的原因是:如果要画图型,一定要创建一个dc对象,不管是memorydcor clientdc,这个对象都是以整个屏幕为基础的。而如果要显示一张图片的话,一定是要把图片转换成bitmap类型,然后再转成...

weixin_39702559的博客 461

来!简单了解一下计算机发展史!

​ 1936年,英国数学家阿兰・麦席森・图灵提出了一种抽象的计算模型——图灵机( Turing machine)。图灵机,又称图灵计算机,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。​ 图灵机是一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。

m0_57290404的博客 2902

简单的python画图小实例-wxPython实现绘图小例子

本文实例为大家分享了wxPython绘图小例子的具体实现代码,供大家参考,具体内容如下一个绘图的例子:#!/usr/bin/env python# -*- coding: utf-8 -*-'''Function:绘图Input:NONEOutput: NONEauthor: socratesblog:http://www.cnblogs.com/dyx1024/date:2012-07-11''...

weixin_37988176的博客 610

Unity动态创建Avatar骨骼映射

Unity Avatar骨骼映射动态创建,适配Unity通用动画,无需经过第三方建模软件,可运行时创建

Nbin_Newby的博客 1万+

【CubeMX】STM32G474 HRTIM 互补PWM与死区时间配置实战

本文详细介绍了如何使用STM32CubeMX配置STM32G474的高分辨率定时器HRTIM生成互补PWM波形并精确设置死区时间。通过实战步骤讲解时钟配置、死区计算与高级功能,帮助工程师在电机驱动和电源应用中实现精准控制,避免上下桥臂直通风险。

grpc6streamer的博客 722

wxpython动态实时绘图_wxPython实现画图板

本文实例为大家分享了wxPython画图板展示的具体代码,供大家参考,具体内容如下#coding:GBK'''Created on 2012-3-22@author: cWX53049'''import wximport timefrom bsddb.test.test_pickle import cPickleimport os_formatStr="%Y-%m-%d %H:%M:%S"clas...

weixin_39874589的博客 547

银河麒麟Arm64 v10 sp1系统QT5.12.8离线环境配置全攻略

本文详细介绍了在银河麒麟Arm64 v10 sp1系统上配置QT5.12.8离线开发环境的完整流程。从安装包获取、依赖检查到环境变量配置,逐步指导开发者解决飞腾处理器架构下的常见问题,包括OpenGL库冲突、中文乱码处理等,特别适合军工、政务等需要离线部署的场景。

weixin_26899659的博客 504

wxpython动态实时绘图_wxPython实现的画图板 | 学步园

#coding:GBK'''Created on 2012-3-22@author: cWX53049'''import wximport timefrom bsddb.test.test_pickle import cPickleimport os_formatStr="%Y-%m-%d %H:%M:%S"class SkethWindow(wx.Window):def __init__(sel...

weixin_39980184的博客 191

基于毫米波生物感知雷达+STM32设计的独居老人居家监护系统(微信小程序)(192)

当前基于STM32设计的独居老人居家监护系统为独居老人提供一种简便、实时的健康监护服务。该系统通过集成多种传感器和功能模块,能够实时监测老人的生理指标、姿态以及室内环境状况,并通过微信小程序远程显示数据,当出现异常情况时及时发出报警提醒。

1万+

STM32 IIC温湿度传感器(STH45)实验

精度 ΔRH = ±1.0 %RH, ΔT = ±0.1 °C• 平均电流:0.4 μA,空闲电流:80 nA• I2C FM、CRC 校验和、乘法。I2C 地址。• 专利保护选项 [1]、PTFE 膜和可拆卸保护盖• 工作范围:0 …100 %相对湿度,−40…125 摄氏度• 在冷凝环境中功能齐全• 动力加热器,真正的NIST可追溯性• JEDEC JESD47 认证 • 符合 ISO 17025 : 2017 的传感器专用校准证书,3 点温度校准。

baidu_34971492的博客 3067

wxpython动态实时绘图_wxPython 画图板

终于开始Python学习之旅了,姑且以一个“画图板”小项目开始吧。放慢脚步,一点一点地学习。1月28日更新第一次遇到的麻烦便是“重绘”,查了好多资料,终于重绘成功了。#-*- encoding: gbk -*importwx"""this version use class 'PaintDC' and 'ClientDC'"""classMainFrame(wx.Frame):def __init...

weixin_39974932的博客 930

比NTP还牛逼的时间同步协议:1588v2,亚微秒级!

1588v2,又称为Precision Time Protocol Version 2,即精密时间协议的第二版本,或称为PTPv2,是一种精密时间同步协议标准,旨在实现网络中设备之间的高精度时间同步。该协议由IEEE标准组织发布,并在网络测量和控制系统中得到广泛应用。1588v2的主要目的是在计算机网络中提供高度准确的时间同步。它可用于确保不同设备之间的时钟同步,从而协调它们的操作。这对于需要协同工作的系统、无线通信基站等具有关键性的应用非常重要。

网络技术联盟站 4276

wxPython 画图板

  终于开始Python学习之旅了,姑且以一个“画图板”小项目开始吧。放慢脚步,一点一点地学习。 1月28日更新     第一次遇到的麻烦便是“重绘”,查了好多资料,终于重绘成功了。 #-*- encoding: gbk -* import wx """ this version use class 'PaintDC' and 'ClientDC' """ cla...

weixin_30810583的博客 264

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

wxpython编程之 画板(一个不错的研究的完整示例)

 这是一个完整的画图板demo ,觉得很不错更详细的介绍,参见:资源下载中的wxpython教程的第6章 本demo中用到的图片:open.png:save.png:new.png:splash.png:源代码:import wximport wx.htmlimport cPickleimport osfrom wx.lib import but

2659

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

wxPython+opencv 打造自己的画图板

作者 |月小水长(某 985 计算机学院大三在校生,熟悉 C++、Java、Python等多种语言,有大型软件项目开发经验,致力于安卓、计算机视觉、爬虫、数据可视化开发...

Python大本营的博客 1278

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

易百教程wxpython_wxPython+opencv 打造自己的画图板

去年期末因为项目需要,自己动手写代码制作了一款简单的图片处理工具。其效果图如下:整个软件的 GUI 采用 wxPython框架,图像处理模块采用 opencv, 主要的功能及实现从系统任意文件夹加载图片这个采用tkinter库的filedialog模块很容易实现image_path=filedialog.askopenfilename(initialdir=r"..\\",title="se...

weixin_29175469的博客 430

opencv显示中文_wxPython+opencv 打造自己的画图板

作者 |月小水长(某 985 计算机学院大三在校生,熟悉 C++、Java、Python等多种语言,有大型软件项目开发经验,致力于安卓、计算机视觉、爬虫、数据可视化开发,也是业余的前端爱好者。)来源 | 月小水长(ID:inspurer)去年期末因为项目需要,自己动手写代码制作了一款简单的图片处理工具。其效果图如下:整个软件的 GUI 采用 wxPython框架,图像处理模块采用 op...

weixin_39639686的博客 125

python简单绘图制作_Python使用tkinter制作一个简易的绘图程序二(Python GUI编程)...

上节课,我们使用Python中tkinter库制作了一个简易的画图板程序,基本实现了圆、椭圆、矩形、直线等图形的绘制功能。但是,效果还不是很令人满意,我们的多边形还不能正确绘制。这一节我们对多边形绘制功能进行完善。多边形的绘制不同于圆、矩形、直线的绘制。如果按照圆、椭圆、矩形、直线绘制方法来绘制多边形,即先确定一个起始点,然后拖动鼠标确定一个终止点后释放鼠标的方法,是不能够自定义多边形的各顶点的(...

weixin_39925813的博客 931

python画直线的方法

在上面这三种方法中,列表解析法画出的是一条直线, for循环解析法画出的是两条直线,而循环解析法和 for循环解析法相结合画出的则是三条直线。只需要在程序中添加一个变量,然后使用 for循环来完成这一系列的操作即可: 例如: 输入变量名为“row”,然后使用 for循环来画直线: 注意:我们使用 for循环来画直线时,对于每一次重复操作,都会创建一个新的列表变量。通过上面的代码,我们可以看到,整个过程只需要三个函数: 在画直线的函数中,有两个参数:一个是要画的直线,一个是要绘制的直线的长度。

花生日记 8942

wxPython绘图

import wx class DrawFrame(wx.Window): def __init__(self,parent,ID): wx.Window.__init__(self,parent,ID) self.Bind(wx.EVT_LEFT_DOWN,self.OnLeftDown) self.Bind(wx.EVT_LEFT_UP,self.OnLeftUp) self.Bind(wx.EVT_MOTION.

qq_35356741的博客 825
上一篇: wxPython MVC 数据库小demo
下一篇: java 异步执行任务,返回进度
JAVA2010CZP
博客等级 码龄16年 15粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值