Python简易画图软件开发
生活随笔
收集整理的這篇文章主要介紹了
Python简易画图软件开发
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
可以簡單實(shí)現(xiàn)清屏、橡皮檫、矩形、直線、箭頭、畫筆以及顏色的選擇
"""開發(fā)畫圖軟件""" from tkinter import * from tkinter.filedialog import * from tkinter.colorchooser import * from tkinter.filedialog import *# 窗口的寬度和高度 win_width = 900 win_height = 450class Application(Frame):def __init__(self, master=None, bgcolor="#000000"):super().__init__(master) # super()代表的是父類的定義,而不是父類對象self.master = masterself.bgcolor = bgcolorself.x = 0self.y = 0self.fgcolor = "#ff0000"self.lastDraw = 0 # 表示最后繪制的圖形的idself.startDrawFalg = Falseself.pack()self.createWidget()def createWidget(self):# 創(chuàng)建繪圖區(qū)域self.drawpad = Canvas(root, width=win_width, height=win_height * 0.9, bg=self.bgcolor)self.drawpad.pack()# 創(chuàng)建按鈕btn_start = Button(root, text="開始", name="start")btn_start.pack(side="left", padx="10")btn_pen = Button(root, text="畫筆", name="pen")btn_pen.pack(side="left", padx="10")btn_rect = Button(root, text="矩形", name="rect")btn_rect.pack(side="left", padx="10")btn_clear = Button(root, text="清屏", name="clear")btn_clear.pack(side="left", padx="10")btn_erasor = Button(root, text="橡皮擦", name="erasor")btn_erasor.pack(side="left", padx="10")btn_line = Button(root, text="直線", name="line")btn_line.pack(side="left", padx="10")btn_lineArrow = Button(root, text="箭頭直線", name="lineArrow")btn_lineArrow.pack(side="left", padx="10")btn_color = Button(root, text="顏色", name="color")btn_color.pack(side="left", padx="10")# 事件處理btn_pen.bind_class("Button", "<1>", self.eventManager)self.drawpad.bind("<ButtonRelease-1>", self.stopDraw)# 增加顏色切換快捷鍵root.bind("<KeyPress-r>", self.kuaijiejian)root.bind("<KeyPress-g>", self.kuaijiejian)root.bind("<KeyPress-y>", self.kuaijiejian)def eventManager(self, event):name = event.widget.winfo_name()print(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 == "erasor":self.drawpad.bind("<B1-Motion>", self.myErasor)elif name == "clear":self.drawpad.delete("all")elif name == "color":c = askcolor(color=self.fgcolor, title="選擇畫筆顏色")# [(255,0,0),"#ff0000"]self.fgcolor = c[1]def stopDraw(self, event):self.startDrawFalg = Falseself.lastDraw = 0def startDraw(self, event):self.drawpad.delete(self.lastDraw)if not self.startDrawFalg:self.startDrawFalg = Trueself.x = event.xself.y = event.ydef myline(self, event):self.startDraw(event)self.lastDraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)def mylineArrow(self, event):self.startDraw(event)self.lastDraw = self.drawpad.create_line(self.x, self.y, event.x, event.y, arrow=LAST, fill=self.fgcolor)def myRect(self, event):self.startDraw(event)self.lastDraw = self.drawpad.create_rectangle(self.x, self.y, event.x, event.y, outline=self.fgcolor)def myPen(self, event):self.startDraw(event)self.drawpad.create_line(self.x, self.y, event.x, event.y, fill=self.fgcolor)self.x = event.xself.y = event.ydef myErasor(self, event):self.startDraw(event)self.drawpad.create_rectangle(event.x - 8, event.y - 8, event.x + 8, event.y + 8, fill=self.bgcolor)self.x = event.xself.y = event.ydef kuaijiejian(self, event):if event.char == "r":self.fgcolor = "#ff0000"elif event.char == "g":self.fgcolor = "#00ff00"elif event.char == "y":self.fgcolor = "#ffff00"if __name__ == '__main__':root = Tk()root.geometry(str(win_width) + "x" + str(win_height) + "+200+300")root.title("畫圖軟件")app = Application(master=root)root.mainloop()?
總結(jié)
以上是生活随笔為你收集整理的Python简易画图软件开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS系统基于iPXE搭建同时支持
- 下一篇: 拜占庭共识Tendermint介绍及简单