绘制直线
1 from tkinter import * 2 3 win_width = 900 4 win_height = 500 5 6 7 class Application(Frame): 8 9 def __init__(self, master=None, bgcolor='#000000'): 10 super().__init__(master) 11 self.master = master 12 self.bgcolor = bgcolor 13 self.pack() 14 self.x = 0 15 self.y = 0 16 self.startDrawFlag = False 17 self.lastDraw = 0 18 self.fgcolor = '#ff0000' 19 self.createWidget() 20 21 def createWidget(self): 22 # 创建绘图区 23 self.drawpad = Canvas(root, width=win_width, height=win_height*0.9, bg=self.bgcolor) 24 self.drawpad.pack() 25 26 btn_start = Button(root, text='开始', name='start') 27 btn_start.pack(side='left', padx='10') 28 btn_pen = Button(root, text='画笔', name='pen') 29 btn_pen.pack(side='left', padx='10') 30 btn_rect = Button(root, text='矩形', name='rect') 31 btn_rect.pack(side='left', padx='10') 32 btn_clear = Button(root, text='清屏', name='clear') 33 btn_clear.pack(side='left', padx='10') 34 btn_earser = Button(root, text='橡皮擦', name='earser') 35 btn_earser.pack(side='left', padx='10') 36 btn_line = Button(root, text='直线', name='line') 37 btn_line.pack(side='left', padx='10') 38 btn_lineArrow = Button(root, text='箭头', name='lineArrow') 39 btn_lineArrow.pack(side='left', padx='10') 40 btn_color = Button(root, text='颜色', name='color') 41 btn_color.pack(side='left', padx='10') 42 43 btn_pen.bind_class('Button', '<1>', self.eventManager) 44 self.drawpad.bind('<ButtonRelease-1>', self.stopDraw) 45 46 47 def eventManager(self, event): 48 name = event.widget.winfo_name() 49 print(name) 50 if name == 'line': 51 self.drawpad.bind('<B1-Motion>', self.myline) 52 53 def stopDraw(self, event): 54 self.startDrawFlag = False 55 self.lastDraw = 0 56 57 def myline(self, event): 58 self.drawpad.delete(self.lastDraw) 59 self.lastDraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor) 60 if not self.startDrawFlag: 61 self.startDrawFlag = True 62 self.x = event.x 63 self.y = event.y 64 65 66 67 if __name__ == '__main__': 68 root = Tk() 69 root.geometry(str(win_width)+'x'+str(win_height)+'+100+100') 70 root.title('绘图') 71 app = Application(master=root) 72 root.mainloop()