十二、GUI设计-画图程序

跟風遠走 提交于 2020-02-09 20:27:14
"""小小画笔"""from tkinter import *from tkinter.filedialog import *from tkinter.colorchooser import *height_root = 450width_root = 900class Application(Frame):    def __init__(self, master=None,bgcolors="#000000"):        super().__init__(master)        # super()代表的是父类的定义,而不是父类对象        self.master = master        self.bgcolors = bgcolors        self.pack()        self.createWidget()        self.x = 0        self.y = 0        self.fgcolor = "#ff0000"        self.lastdrawLine = 0        self.drawFlag = FALSE    def createWidget(self):        #创建画图区域        self.drawPad = Canvas(root, width=width_root, height=height_root*0.9, bg=self.bgcolors)        self.drawPad.pack()        #创建按钮        btn_start = Button(text="开始", name="start")        btn_start.pack(side="left",padx=10)        btn_pen = Button(text="画笔", name="pen")        btn_pen.pack(side="left", padx=10)        btn_rect = Button(text="矩形", name="rect")        btn_rect.pack(side="left", padx=10)        btn_clear = Button(text="清屏", name="clear")        btn_clear.pack(side="left", padx=10)        btn_earsor = Button(text="橡皮差", name="earsor")        btn_earsor.pack(side="left", padx=10)        btn_line = Button(text="直线", name="line")        btn_line.pack(side="left", padx=10)        btn_lineArrow = Button(text="箭头直线", name="lineArrow")        btn_lineArrow.pack(side="left", padx=10)        btn_color = Button(text="颜色", name="color")        btn_color.pack(side="left", padx=10)        btn_pen.bind_class("Button", "<1>", self.eventManager)        self.drawPad.bind("<ButtonRelease-1>", self.drawFlagRelease)    def eventManager(self,event):        name = event.widget.winfo_name()        if name == "line":            self.drawPad.bind("<B1-Motion>", self.myline)        elif name == "lineArrow":            self.drawPad.bind("<B1-Motion>", self.mylineArrow)        elif name == "rect":            self.drawPad.bind("<B1-Motion>", self.myrect)        elif name == "pen":            self.drawPad.bind("<B1-Motion>", self.mypen)        elif name == "earsor":            self.drawPad.bind("<B1-Motion>", self.myearsor)        elif name == "clear":            self.drawPad.delete("all")        elif name == "color":            colorpen = askcolor(color="red", title="请选择画笔颜色")            self.fgcolor = colorpen[1]    def drawFlagRelease(self,event):        self.drawFlag = FALSE        self.lastdrawLine = 0    def drawStartMove(self,event):        self.drawPad.delete(self.lastdrawLine)        if not self.drawFlag:            self.drawFlag = True            self.x = event.x            self.y = event.y    def myline(self, event):        self.drawStartMove(event)        self.lastdrawLine = self.drawPad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)    def mypen(self, event):        self.drawStartMove(event)        self.drawPad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)        self.x = event.x        self.y = event.y    def myearsor(self, event):        self.drawStartMove(event)        self.drawPad.create_rectangle(event.x-4, event.y-4, event.x+4, event.y+4, fill=self.bgcolors)    def mylineArrow(self,event):        self.drawStartMove(event)        self.lastdrawLine = self.drawPad.create_line(self.x, self.y, event.x,event.y, arrow=LAST, fill=self.fgcolor)    def myrect(self, event):        self.drawStartMove(event)        self.lastdrawLine = self.drawPad.create_rectangle(self.x, self.y, event.x, event.y,  outline=self.fgcolor)if __name__ == '__main__':    root = Tk()    root.geometry(str(width_root)+"x"+str(height_root)+"+200+300")    root.title("党京伟的一个画笔软件")    app = Application(master=root)    root.mainloop()

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!