#-*- coding:utf-8 -*-
import Tkinter
from reportlab.pdfgen.canvas import Canvas
#定义按钮
class MyButton:
def __init__(self , root , canvas , label , type):
self.root = root
self.canvas = canvas
self.label = label
if type ==0:
button = Tkinter.Button(root , text = "DrawLine" ,command = self.DrawLine)
elif type==1:
button = Tkinter.Button(root , text = "DrawArc" , command = self.DrawArc)
elif type ==2:
button = Tkinter.Button(root , text ="DrawRec ", command = self.DrawRec)
else:
button = Tkinter.Button(root , text = "DrawOval" ,command = self.DrawOval)
button.pack(side = "left")
def DrawLine(self):
self.label.text.set('Draw Line')
self.canvas.SetStatus(0)
def DrawArc(self):
self.label.text.set('Draw Arc')
self.canvas.SetStatus(1)
def DrawRec(self):
self.label.text.set('Draw Rec')
self.canvas.SetStatus(2)
def DrawOval(self):
self.label.text.set('Draw Oval')
self.canvas.SetStatus(3)
class Mycanvas:
def __init__(self, root):
self.status = 0
self.draw = 0
self.root = root
self.canvas = Tkinter.Canvas(root ,bg ="white" , width = 400 , height = 320)
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('<Delete>', self.Del)
self.canvas.bind('<KeyPress-d>', self.Del)
self.canvas.bind('<KeyPress-e>', self.Exit)
def Draw(self ,event):
#判断是否进行画图
if self.draw == 0:
self.x = event.x
self.y = event.y
self.draw = 1
else:
if self.status ==0 :
self.canvas.create_line(self.x , self.y .event.x ,event.y)
self.draw =0
elif self.status ==1 :
self.canvas.create_arc(self.x , self.y .event.x ,event.y)
self.draw =0
elif self.status == 2 :
self.canvas.create_rectangle(self.x , self.y .event.x ,event.y)
self.draw =0
else:
self.canvas.create_oval(self.x , self.y .event.x ,event.y)
self.draw = 0
def Del(self,Event):
items = self.canvas.find_all()
for item in items:
self.canvas.delete(item)
def Exit(self,Event):
self.root.quit()
def SetStatus(self,status):
self.status = status
#定义标签
class MyLabel:
def __init__(self ,root):
self.root = root
self.canvas = canvas
self.text = Tkinter.StringVar() #生成标签引用变量
self.text.set("Draw Line")
#生成标签
self.label = Tkinter.Label(root , textvariable = self.text , fg = 'red' , width = 40)
self.label.pack(side = 'left')
root = Tkinter.Tk()
canvas = Mycanvas(root)
label = MyLabel(root)
MyButton(root ,canvas ,label ,0)
MyButton(root ,canvas ,label ,1)
MyButton(root ,canvas ,label ,2)
MyButton(root ,canvas ,label ,3)
root.mainloop()
python的Tkinter
最新推荐文章于 2022-06-10 18:11:15 发布