用户:
白滕查看:0 回复:0 评论:0 创建时间:2020-08-15T23:19:08
【作品展示】

【作品介绍】
一个礼拜的作品,看看吧
【作品源代码】
from tkinter import *
import tkinter.messagebox
import tkinter.colorchooser
import tkinter.simpledialog
root = Tk()
root.title("谢之安小米——电子画板")
root.geometry("910x650")
# 控制窗口是否可以扩大缩小,1:允许,0:不允许
root.resizable(0, 0)
# 创建画板
canvas = Canvas(root, bg="white", width=800, height=600)
# 画板位置
canvas.place(x=110, y=40)
# 控制是否允许画图的变量,1:允许,0:不允许
yesno = IntVar(value=0)
# 控制画图类型的变量,1:曲线,2:直线,3:矩形,4:文本,5:橡皮,6:圆弧,7:椭圆,
what = IntVar(value=1)
# 记录鼠标位置的变量
X = IntVar(value=0)
Y = IntVar(value=0)
# 记录最后绘制图形的id
lastDraw = 0
# 画笔初始大小
Width = 1
# 前景色和背景色
foreColor = "Black"
backColor = "White"
# 鼠标左键按下时,获取鼠标的位置
def onLeftButtonDown(event):
yesno.set(1)
X.set(event.x)
Y.set(event.y)
if what.get() == 4:
width = Width
canvas.create_text(event.x, event.y, text=text, font="华文黑体 {} bold".format(width), fill=foreColor)
canvas.bind("", onLeftButtonDown)
# 按住鼠标左键移动画图
def onLeftButtonMove(event):
global lastDraw
if what.get() == 1:
canvas.create_line(X.get(), Y.get(), event.x, event.y, fill=foreColor, width=Width)
X.set(event.x)
Y.set(event.y)
elif what.get() == 2:
# 绘制直线,先删除刚刚画过的直线,再画一条新的直线
try:
canvas.delete(lastDraw)
except Exception as e:
pass
lastDraw = canvas.create_line(X.get(), Y.get(), event.x, event.y, fill=foreColor, width=Width)
elif what.get()==3:
# 绘制矩形,先删除刚刚画过的矩形,再画一个新的矩形
try:
canvas.delete(lastDraw)
except Exception as e:
pass
lastDraw = canvas.create_rectangle(X.get(), Y.get(), event.x, event.y, fill=backColor, outline=foreColor, width=Width)
elif what.get() == 6:
# 绘制圆弧,同样要删除刚才因为鼠标移动画出的,留下最终想要的
try:
canvas.delete(lastDraw)
except Exception as e:
pass
lastDraw = canvas.create_arc(X.get(), Y.get(), event.x, event.y, style=ARC, fill=foreColor, width=Width)
elif what.get() == 7:
# 绘制椭圆
try:
canvas.delete(lastDraw)
except Exception as e:
pass
lastDraw = canvas.create_oval(X.get(), Y.get(), event.x, event.y, fill=backColor, outline=foreColor, width=Width)
elif what.get() == 5:
#橡皮,使用背景色填充10*10的圆
canvas.create_oval(event.x - 5, event.y - 5, event.x + 5, event.y + 5, outline="white", fill="white", width=Width)
canvas.bind("", onLeftButtonMove)
# 鼠标左键抬起,不允许画图
def onLeftButtonUp(event):
yesno.set(0)
global lastDraw
lastDraw = 0
canvas.bind("", onLeftButtonUp)
# 画自由曲线
def drawCurve(event):
what.set(1)
# 画直线
def drawLine(event):
what.set(2)
# 画矩形
def drawRectangle(event):
what.set(3)
# 画圆弧
def drawArc(event):
what.set(6)
# 画椭圆
def drawOval(event):
what.set(7)
# 橡皮
def onErase(event):
what.set(5)
# 选择前景色
def chooseForeColor(event):
global foreColor
foreColor = tkinter.colorchooser.askcolor()[1]
# 选择背景色
def chooseBackColor(event):
global backColor
backColor = tkinter.colorchooser.askcolor()[1]
# 添加文字
def drawText(event):
global text
text = tkinter.simpledialog.askstring(title="输入你要显示的文字:", prompt="")
what.set(4)
# 清空画布
def Clear(event):
canvas.delete(ALL)
# 画笔大小更改设置
def penSet(event):
global Width
Width = int(e1.get())
tkinter.messagebox.showinfo("提示", "画笔大小已设置为{}".format(Width))
# 浅蓝色、粉红色、画笔大小文本框
Label(root, height=2, width=350, bg="LightSkyBlue").place(x=0, y=0)
Label(root, height=200, width=15, bg="LightPink").place(x=0, y=40)
Label(root, text="画笔大小:", bg="LightSkyBlue", font=("华文黑体", 20, "bold")).place(x=0, y=5)
# 笔画粗细输入框
e1 = Entry(root, width=3, bg="DeepSkyBlue", font=("华文黑体", 20, "bold"))
e1.place(x=150, y=5)
# 设置按钮
penset = Button(root, width=5, bg="PaleGreen", font=("华文黑体", 15), text="设置")
penset.place(x=210, y=3)
penset.bind("", penSet)
# 功能区按钮
curve = Button(root, width=8, bg="PaleGreen", font=("华文黑体", 15), text="自由曲线")
line = Button(root, width=8, bg="PaleGreen", font=("华文黑体", 15), text="直线")
arc = Button(root, width=8, bg="PaleGreen", font=("华文黑体", 15), text="圆弧")
rectangle = Button(root, width=8, bg="PaleGreen", font=("华文黑体", 15), text="长方形")
oval = Button(root, width=8, bg="PaleGreen", font=("华文黑体", 15), text="椭圆")
delete = Button(root, width=8, bg="PaleGreen", font=("华文黑体", 15), text="橡皮")
chooseforecolor = Button(root, width=8, bg="PaleGreen", font=("华文黑体", 15), text="画笔颜色")
choosebackcolor = Button(root, width=8, bg="PaleGreen", font=("华文黑体", 15), text="填充颜色")
text = Button(root, width=8, bg="PaleGreen", font=("华文黑体", 15), text="文字")
clearall = Button(root, width=8, bg="PaleGreen", font=("华文黑体", 15), text="清空")
curve.place(x=10, y=60)
line.place(x=10, y=110)
arc.place(x=10, y=160)
rectangle.place(x=10, y=210)
oval.place(x=10, y=260)
delete.place(x=10, y=310)
chooseforecolor.place(x=10, y=360)
choosebackcolor.place(x=10, y=410)
text.place(x=10, y=460)
clearall.place(x=10, y=510)
curve.bind("", drawCurve)
line.bind("", drawLine)
arc.bind("", drawArc)
rectangle.bind("", drawRectangle)
oval.bind("", drawOval)
delete.bind("", onErase)
chooseforecolor.bind("", chooseForeColor)
choosebackcolor.bind("", chooseBackColor)
text.bind("", drawText)
clearall.bind("", Clear)
root.mainloop()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn