from tkinter import *
from tkinter.colorchooser import askcolor
win_width=1200
win_height=600
class Application(Frame):
def __init__(self, maseter):
super().__init__(maseter)
self.master = maseter
self.bgcolor = '#000000'
self.pack()
self.createWidget()
self.fgcolor = '#999999'
self.x = 0
self.y = 0
self.lastDraw = 0
self.startDraw = False
def createWidget(self):
self.drawpad = Canvas(self.master, width=win_width, height=win_height, bg=self.bgcolor)
self.drawpad.pack()
btn_start = Button(root, text='start', name='start')
btn_start.pack(side='left', padx=10)
btn_pen = Button(root, text='pen', name='pen')
btn_pen.pack(side='left', padx=10)
btn_rect = Button(root, text='rect', name='rect')
btn_rect.pack(side='left', padx=10)
btn_clear = Button(root, text='clear', name='clear')
btn_clear.pack(side='left', padx=10)
btn_eraser = Button(root, text='eraser', name='eraser')
btn_eraser.pack(side='left', padx=10)
btn_line = Button(root, text='line', name='line')
btn_line.pack(side='left', padx=10)
btn_lineArrow = Button(root, text='lineArrow', name='lineArrow')
btn_lineArrow.pack(side='left', padx=10)
btn_color = Button(root, text='color', name='color')
btn_color.pack(side='left', padx=10)
root.bind("<KeyPress-r>", self.shortcut)
root.bind("<KeyPress-g>", self.shortcut)
root.bind("<KeyPress-b>", self.shortcut)
root.bind("<KeyPress-y>", self.shortcut)
self.drawpad.bind_class("Button", '<1>', self.event_Manager)
def event_Manager(self, event):
name = event.widget.winfo_name()
print(name)
if name == 'line':
self.drawpad.bind('<B1-Motion>', self.myline)
self.drawpad.bind('<ButtonRelease-1>', self.stopDraw)
if name == 'lineArrow':
self.drawpad.bind('<B1-Motion>', self.myArrowline)
self.drawpad.bind('<ButtonRelease-1>', self.stopDraw)
if name == 'rect':
self.drawpad.bind('<B1-Motion>', self.myRect)
self.drawpad.bind('<ButtonRelease-1>', self.stopDraw)
if name == 'pen':
self.drawpad.bind('<B1-Motion>', self.myPen)
self.drawpad.bind('<ButtonRelease-1>', self.stopDraw)
if name == 'eraser':
self.drawpad.bind('<B1-Motion>', self.eraser)
self.drawpad.bind('<ButtonRelease-1>', lambda event:self.drawpad.delete(self.lastDraw))
if name == 'clear':
self.drawpad.delete('all')
self.drawpad.bind('<B1-Motion>', lambda event: None)
self.drawpad.bind('<ButtonRelease-1>', lambda event: None)
if name == 'color':
c = askcolor(color=self.fgcolor, title="choose your want color.")
self.fgcolor = c[1]
def myline(self, event):
if not self.startDraw:
self.startDraw = True
self.x = event.x
self.y = event.y
self.drawpad.delete(self.lastDraw)
self.lastDraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)
def stopDraw(self, event):
self.startDraw = False
self.lastDraw = 0
def myArrowline(self, event):
if not self.startDraw:
self.startDraw = True
self.x = event.x
self.y = event.y
self.drawpad.delete(self.lastDraw)
self.lastDraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, arrow=LAST, fill=self.fgcolor)
def myRect(self, event):
if not self.startDraw:
self.startDraw = True
self.x = event.x
self.y = event.y
self.drawpad.delete(self.lastDraw)
self.lastDraw = self.drawpad.create_rectangle(self.x, self.y, event.x, event.y, outline=self.fgcolor)
def myPen(self, event):
if not self.startDraw:
self.startDraw = True
self.x = event.x
self.y = event.y
self.lastDraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)
self.x = event.x
self.y = event.y
def eraser(self, event):
if not self.startDraw:
self.startDraw = True
self.x = event.x
self.y = event.y
self.drawpad.create_rectangle(event.x-10, event.y-10, event.x+10, event.y+10, fill=self.bgcolor)
self.drawpad.delete(self.lastDraw)
self.lastDraw = self.drawpad.create_rectangle(event.x-10, event.y-10, event.x+10, event.y+10, outline=self.fgcolor)
def shortcut(self, event):
if event.char == 'r':
self.fgcolor = '#ff0000'
if event.char == 'g':
self.fgcolor = '#00ff00'
if event.char == 'b':
self.fgcolor = '#898979'
if event.char == 'y':
self.fgcolor = '#0997788'
root = Tk()
root.geometry('1200x700')
root.title("drawing software")
app = Application(maseter=root)
root.mainloop()
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
你画我猜.rar (2个子文件)
你画我猜
drawingSoftware.exe 10.09MB
drawingSoftware.py 5KB
共 2 条
- 1
资源评论
这个需求做不l
- 粉丝: 20
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功