"""开发画图软件"""
import tkinter as tk
# 窗口的宽度和高度
win_width=900
win_height=450
class Application(tk.Frame):
def __init__(self, master = None):
super().__init__(master)
self.master = master
self.bgcolor = '#000000'
self.x = 0
self.y = 0
self.fgcolor = '#ff0000'
self.lastDraw = 0
self.pack()
self.createWidget()
def createWidget(self):
# 创建绘图区
self.drawpad = tk.Canvas(self, width=win_width, height=win_height * 0.9, bg=self.bgcolor)
self.drawpad.pack()
# 创建按钮
btn_start = tk.Button(self, text='开始', width='10', name='start');btn_start.pack(side='left', padx='10', pady='5')
btn_pen = tk.Button(self, text='画笔', width='10', name='pen');btn_pen.pack(side='left', padx='10', pady='5')
btn_rect = tk.Button(self, text='矩形', width='10', name='rect');btn_rect.pack(side='left', padx='10', pady='5')
btn_clear = tk.Button(self, text='清屏', width='10', name='clear');btn_clear.pack(side='left', padx='10', pady='5')
btn_erasor = tk.Button(self, text='橡皮擦', width='10', name='erasor');btn_erasor.pack(side='left', padx='10', pady='5')
btn_line = tk.Button(self, text='直线', width='10', name='line');btn_line.pack(side='left', padx='10', pady='5')
btn_lineArrow = tk.Button(self, text='箭头直线', width='10', name='lineArrow');btn_lineArrow.pack(side='left', padx='10', pady='5')
btn_color = tk.Button(self, text='颜色', width='10', name='color');btn_color.pack(side='left', padx='10', pady='5')
def eventManager(self,event):
name = event.widget.winfo_name()
print(name)
if name == "line":
self.drawpad.bind('<B1-Motion>',self.myline)
def myline(self, event):
self.drawpad.delete(self.lastDraw)
self.lastDraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)
if __name__ == "__main__":
root = tk.Tk()
root.title('画画本')
root.geometry(str(win_width)+'x'+str(win_height))
app = Application(master = root)
root.mainloop()
老师,代码写到这里,有点问题:
全程照着打,为啥,我点击直线没有反应
如下图,为啥要在事件管理中写呢,直接在对应button后面 ,绑定事件不就可以了嘛

问题2截图中第二三行什么意思,老师木有说道,直接就有了
如下图,这个fill是什么意思
