使用事件处理创建一个简单的绘图实例程序 python
来源:互联网 发布:vgg19网络结构图 编辑:程序博客网 时间:2024/05/17 03:24
import Tkinterclass mybutton:#定义按钮类def __init__(self,root,canvas1,label1,type):#类初始化canvas1,label1是MyCanvals,mylabel的实例,因此可以使用类中的方法self.root=root#保存引用值self.canvas1=canvas1self.label1=label1if type==0:#根据类型创建按钮button=Tkinter.Button(root,text='huaxian',command=self.DrawLine)elif type==1:button=Tkinter.Button(root,text='huashanxing',command=self.DrawArc)elif type==2:button=Tkinter.Button(root,text='huajuxing',command=self.DrawRec)else:button=Tkinter.Button(root,text='huatuoyuan',command=self.DrawOval)button.pack(side='left')def DrawLine(self):#DrawLine按钮事件处理函数self.label1.text.set('Draw Line')self.canvas1.SetStatus(0)#把status赋值,便于根据status的值进行画图def DrawArc(self):self.label1.text.set('Draw Arc')self.canvas1.SetStatus(1)def DrawRec(self):self.label1.text.set('Draw Rectangle')self.canvas1.SetStatus(2)def DrawOval(self):self.label1.text.set('Draw Oval')self.canvas1.SetStatus(3)class MyCanvals:def __init__(self,root):self.status=0self.draw=0self.root=rootself.canvas=Tkinter.Canvas(root,bg='red',width=600,height=480)#生成canvas组件self.canvas.pack()self.canvas.bind('<ButtonRelease-1>',self.Draw)#绑定事件到左键self.canvas.bind('<Button-2>',self.Exit)#绑定事件到中键self.canvas.bind('<Button-3>',self.Del)#绑定事件到右键self.canvas.bind_all('<Delete>',self.Del)#绑定事件到delete键self.canvas.bind_all('<KeyPress-d>',self.Del)#绑定事件到d键self.canvas.bind_all('<KeyPress-e>',self.Exit)#绑定事件到e键def Draw(self,event):#绘图事件处理函数if self.draw==0:#判断是否绘图,先记录起始位置self.x=event.xself.y=event.yself.draw=1else:#根据self.status绘制不同的图形if self.status==0:self.canvas.create_line(self.x,self.y,event.x,event.y)self.draw=0elif self.status==1:self.canvas.create_arc(self.x,self.y,event.x,event.y)self.draw=0elif self.status==2:self.canvas.create_rectangle(self.x,self.y,event.x,event.y)self.draw=0else:self.canvas.create_oval(self.x,self.y,event.x,event.y)self.draw=0def Del(self,event):#按下右键或者d键删除图形items=self.canvas.find_all()for i in items:self.canvas.delete(i)def Exit(self,event):#按下中键或者e键退出self.root.quit()def SetStatus(self,status):#设置绘制的图形self.status=statusclass mylabel:#定义标签类def __init__(self,root):self.root=rootself.canvas1=canvas1self.text=Tkinter.StringVar()#生成标签引用变量self.text.set('Draw Line')self.label=Tkinter.Label(root,textvariable=self.text,fg='blue',width=50)#生成标签self.label.pack(side='left')root=Tkinter.Tk()#生成主窗口canvas1=MyCanvals(root)#生成实例label1=mylabel(root)#生成实例mybutton(root,canvas1,label1,0)mybutton(root,canvas1,label1,1)mybutton(root,canvas1,label1,2)mybutton(root,canvas1,label1,3)root.mainloop()#进入消息循环
在窗口中单击鼠标左键,然后移到另一个位置,再单击左键将绘制图形,可以单机按钮选择要绘制的图形。单击右键或d键可以删除多余的图形,单击鼠标中键或e键将关闭窗口
阅读全文
0 0
- 使用事件处理创建一个简单的绘图实例程序 python
- 一个简单的事件处理程序
- 一个简单的python程序实例(通讯录)
- 一个SharePoint事件处理程序实例
- MFC 一个简单的绘图程序
- 简单的事件处理程序
- C#事件演示程序1)——一个最简单的C#事件处理程序
- 一个使用drawElements绘图的简单Demo
- 使用JBOSS, Eclipse创建一个EJB3实例程序的过程
- 使用timer控件创建一个简单的报警程序
- 使用timer控件创建一个简单的报警程序
- 使用 timer 来创建一个简单的报警程序
- 使用ServerSocket、Socket创建一个简单的服务聊天程序
- 使用CMakeLists.txt创建一个简单的opengl程序
- 简单事件处理程序
- 作业:文本框的简单事件处理程序
- 文本框的简单事件处理程序
- 文本框的简单事件处理程序
- POJ 3693 Maximum repetition substring(重复次数最多的连续子串 字典序最小)
- TF,数据转换和softmax()
- 微软转向云端,可能意味着又一轮大裁员
- 图片加载失败裂开jquery和js的前端处理方法
- Solr查询参数
- 使用事件处理创建一个简单的绘图实例程序 python
- ContentProvider
- 移动设备IP地址的获取
- 七月算法深度学习 第三期 学习笔记-第六节 图像风格转换
- 获取div中input 中name=code的值
- 容斥原理+质因数分解-HDU4135
- [51NOD]-1264 线段相交 [计算几何&叉积&点积]
- opencv3学习之图像显示及腐蚀/模糊/Canny边缘检测的处理
- 单选对话框初识