1、绘制
from tkinter import *

root=Tk()

w=Canvas(root,width=400,height=200)
w.pack()

def paint(event):
x1,y1=(event.x-1),(event.y-1)
x2,y2= (event.x+1), (event.y+1)
w.create_oval(x1,y1,x2,y2,fill=“red”)

w.bind("",paint)
Label(root,text=“接住鼠标左键开始移动,开始绘制…”).pack(side=BOTTOM)
mainloop()
Python学习笔记0219(tkinter系列)
(2)机器猫画法(知乎上复制的代码,可以用。“熊爸的学习时间”
关注专栏
真厉害的人呀,佩服他,学习一波,记录,方便回顾)

from tkinter import *

初始化

root = Tk()
‘’‘global showflag
v=[IntVar(),IntVar()]
showflag=False #函数hide()所用’’’

w = Canvas(root, width=400, height=400, bg=“pink”)

def drawcircle(r, x, y, color):
# 自定义画圆函数,参数为:半径、圆心X,圆心Y,填充颜色
rhead1 = r
xhead1 = x
yhead1 = y
w.create_oval(xhead1 - rhead1, yhead1 - rhead1, xhead1 + rhead1,
yhead1 + rhead1, fill=color)

临时设置的背景原图,方便查看我画的和原图的契合度

img=PhotoImage(file=r’C:\Users\Administrator.USER-20180904HO\Desktop\python\ameng.gif’)

cankao1=w.create_image((204,203),image=img)

辅助线

w.create_line(0, 200, 400, 200, fill=“gray”, dash=(4))
w.create_line(200, 0, 200, 400, fill=“gray”, dash=(4))

画头部(眼睛部分都是对称的,因为只画一次,直接写数字了。)

drawcircle(90, 200, 139, “dodgerblue”) # 头外圈
drawcircle(75, 200, 154, “white”) # 头内圈
w.create_oval(163, 64, 200, 109, fill=“white”) ##眼眶外圈
w.create_oval(400 - 163, 64, 400 - 200, 109, fill=“white”)
w.create_oval(185, 79, 196, 93, fill=“black”) # 黑眼球
w.create_oval(400 - 185, 79, 400 - 196, 93, fill=“black”)
w.create_oval(189, 82, 193, 90, fill=“white”) # 黑眼球反白
w.create_oval(400 - 189, 82, 400 - 193, 90, fill=“white”)
drawcircle(7, 200, 105, “red”) # 鼻子
w.create_line(200, 112, 200, 178, fill=“black”) # 裂唇
w.create_line(148, 113, 185, 125, fill=“black”) # 胡子
w.create_line(140, 136, 185, 136, fill=“black”)
w.create_line(148, 159, 185, 147, fill=“black”)
w.create_line(400 - 148, 113, 400 - 185, 125, fill=“black”)
w.create_line(400 - 140, 136, 400 - 185, 136, fill=“black”)
w.create_line(400 - 148, 159, 400 - 185, 147, fill=“black”)
w.create_arc(135, 50, 265, 178, start=-48, extent=-84, style=ARC) # 嘴巴

画身体

w.create_rectangle(133, 205, 267, 308, fill=“dodgerblue”) # 主体
w.create_polygon((133, 208), (133, 246), (116, 254), (106, 236), outline=“black”, fill=“dodgerblue”) # 手臂
w.create_polygon((400 - 133, 208), (400 - 133, 246), (400 - 116, 254), (400 - 106, 236), outline=“black”,
fill=“dodgerblue”)
drawcircle(15, 102, 250.5, “white”) # 手
drawcircle(15, 400 - 102, 250.5, “white”)
w.create_oval(117, 300, 192, 329, fill=“white”) # 脚
w.create_oval(400 - 117, 300, 400 - 192, 329, fill=“white”)
w.create_arc(188, 301, 212, 325, start=30, extent=120, outline=“pink”, style=PIESLICE, fill=“pink”)

裤裆,先用白边白色扇形将蓝色擦除,最终完成时修改为粉色

w.create_arc(188, 301, 212, 325, start=30, extent=120, style=ARC)

裤裆,再用黑边白色弧形将描裤裆边缘 /:笑哭

画服饰

drawcircle(52, 200, 240, “white”) # 白肚皮
w.create_arc(148, 188, 252, 292, start=45, extent=90, style=ARC, outline=“white”, width=3)

用宽一些的白线擦掉白肚皮上面不需要的部分

w.create_line(133, 202, 267, 202, capstyle=ROUND, fill=“black”, width=12)

小围巾,想做到原图的黑边红里效果,就画了一根粗黑线和一根细红线,边缘正好差1个像素。

w.create_line(133, 202, 267, 202, capstyle=ROUND, fill=“red”, width=10)

小围巾,细红线

w.create_arc(163, 201, 237, 275, extent=-180, style=PIESLICE, fill=“white”)

肚兜

drawcircle(11, 200, 212, “yellow”)

小铃铛

drawcircle(2.5, 200, 217, “red”)

小铃铛装饰

w.create_line(200, 219, 200, 223, fill=“black”)
w.create_line(190, 212, 212, 212, fill=“black”)
w.create_line(191, 209, 211, 209, fill=“black”)

‘’'def location(event):
#定义一个关联事件,当鼠标点击时,显示点击坐标,方便找点
v[0]=event.x
v[1]=event.y
print(“坐标:”,v[0],v[1])

w.bind(’’,location)

def hide():
#设计一个button来回切换背景和所画图形的位置,以此查看契合度。
global showflag
if showflag==True:
w.lower(cankao1)
showflag=False
else:
w.lift(cankao1)
showflag=True
Button(root,text=“change”,command=hide).pack(side=BOTTOM)
‘’’

w.pack()
mainloop()
Python学习笔记0219(tkinter系列)
(3)设计菜单
from tkinter import *
root=Tk()

def callback():
print(“你好~”)

meoubar=Menu(root)

fillmenu=Menu(meoubar)
fillmenu.add_command(label=“打开”,command=callback)
fillmenu.add_command(label=“保存”,command=root.quit)
fillmenu.add_separator()
fillmenu.add_command(label=“退出”,command=root.quit)
meoubar.add_cascade(label=“文件”,menu=fillmenu)

editmenu=Menu(meoubar,tearoff=False)
editmenu.add_command(label=“剪切”,command=callback)
editmenu.add_command(label=“拷贝”,command=callback)
editmenu.add_command(label=“黏贴”,command=callback)
meoubar.add_cascade(label=“编辑”,menu=editmenu)

root.config(menu=meoubar)

mainloop()

Python学习笔记0219(tkinter系列)Python学习笔记0219(tkinter系列)
(4)按键
from tkinter import *

root=Tk()

def callback():
print(“你好~”)

menubar=Menu(root)
menubar.add_command(label=“撤销”,command=callback)
menubar.add_command(label=“重做”,command=root.quit)

frame=Frame(root,width=512,height=512)
frame.pack()

def popup(event):
menubar.post(event.x_root,event.y_root)

frame.bind("",popup)

mainloop()
Python学习笔记0219(tkinter系列)
(5)checkbutton与radiobutton的区别
from tkinter import *
root=Tk()

def callback():
print(“你好~”)

menubar=Menu(root)

openVar=IntVar()
saveVar=IntVar()
quitVar=IntVar()

filemenu=Menu(menubar,tearoff=True)
filemenu.add_checkbutton(label=“打开”,command=callback,variable=openVar)
filemenu.add_checkbutton(label=“保存”,command=callback,variable=saveVar)
filemenu.add_separator()
filemenu.add_checkbutton(label=“退出”,command=root.quit,variable=quitVar)
menubar.add_cascade(label=“文件”,menu=filemenu)

editVar=IntVar()

editmenu=Menu(menubar,tearoff=False)
editmenu.add_radiobutton(label=“剪切”,command=callback,variable=editVar,value=1)
editmenu.add_radiobutton(label=“拷贝”,command=callback,variable=editVar,value=2)
editmenu.add_radiobutton(label=“黏贴”,command=callback,variable=editVar,value=3)
menubar.add_cascade(label=“编辑”,menu=editmenu)

root.config(menu=menubar)

mainloop()
Python学习笔记0219(tkinter系列)Python学习笔记0219(tkinter系列)
(6)
from tkinter import *

root=Tk()

def callback():
print(“你好~”)
mb=Menubutton(root,text=“点一下”,relief=RAISED)
mb.pack()

filemenu=Menu(mb,tearoff=False)
filemenu.add_command(label=“打开”,command=callback)
filemenu.add_command(label=“保存”,command=callback)
filemenu.add_separator()
filemenu.add_command(label=“退出”,command=root.quit)

mb.config(menu=filemenu)

mainloop()
Python学习笔记0219(tkinter系列)
(7)
from tkinter import *

root=Tk()

variable=StringVar()
variable.set(“one”)

w=OptionMenu(root,variable,“one”,“two”,“three”)
w.pack()

mainloop()
(8)显示列表
from tkinter import *

OPTIONS=[
“Csnksls”,
“sjjlwljb”,
“sbjnkl”,
“bsfvb”,
“nmko”
]

root=Tk()

variable=StringVar()
variable.set(OPTIONS[0])

w=OptionMenu(root,variable,*OPTIONS)
w.pack()

mainloop()
Python学习笔记0219(tkinter系列)

相关文章:

  • 2022-12-23
  • 2022-02-02
  • 2022-12-23
  • 2022-12-23
  • 2021-04-24
  • 2021-11-03
  • 2022-01-15
  • 2021-12-16
猜你喜欢
  • 2021-06-11
  • 2021-08-22
  • 2021-05-10
  • 2022-01-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案