如何用python画一个笑脸,python画简单笑脸代码

大家好,小编为大家解答python画笑脸步骤的中文翻译的问题。很多人还不知道如何用python画一个笑脸,现在让我们一起来看看吧!

大家好,小编来为大家解答以下问题,python画笑脸步骤的中文翻译,python做简单的笑脸的编程,今天让我们一起来看看吧!

1.通过点击鼠标改变绘制笑脸的位置(笑脸半径为100)

代码:

import graphics

def yd(s,p,circ,oval1,oval2,ci1,ci2,o1,o2,bz):#移动函数

    x=s.getX()-p.getX()
    y=s.getY()-p.getY()
    circ.move(x,y)
    oval1.move(x, y)
    oval2.move(x, y)
    ci1.move(x, y)
    ci2.move(x, y)
    o1.move(x, y)
    o2.move(x, y)
    bz.move(x,y)


def text01():#绘制笑脸
    width_k,height_g=800,600#窗口的宽高
    win = graphics.GraphWin("qin",width=width_k,height=height_g)  # 创建一个窗口对象
    p = graphics.Point(win.getWidth()/2, win.getHeight()/2)  # 创建一个中心点对象

    #画脸
    circ = graphics.Circle(p,100)  # 创建一个圆对象,半径为20,位置为点对象
    circ.setFill(graphics.color_rgb(248, 255, 24))  # 填充颜色设置颜色为黄色
    circ.draw(win)  # 将圆绘制到win窗口中

    #画眼睛
    R1=p.clone()
    R2=p.clone()
    L1=p.clone()
    L2=p.clone()

    R1.move(-60,-70)
    R2.move(-20,-10)
    L1.move(20, -70)
    L2.move(60, -10)
    oval1 = graphics.Oval(R1, R2)  # 创建一个椭圆,
    oval2 = graphics.Oval(L1, L2)  # 创建一个椭圆,
    # (长方形,一个左上角点,一个右下角点。如何中间画椭圆)
    oval1.setFill(graphics.color_rgb(255, 255, 255))  # 填充颜色设置颜色为白色
    #oval1.setOutline(graphics.color_rgb(248, 255, 24))  # 设置边框颜色
    oval1.draw(win)  # 将椭圆绘制到win窗口中
    oval2.setFill(graphics.color_rgb(255, 255, 255))  # 填充颜色设置颜色为白色
    #oval2.setOutline(graphics.color_rgb(248, 255, 24))  # 设置边框颜色
    oval2.draw(win)  # 将椭圆绘制到win窗口中

    #画眼珠
    R3=graphics.Point(R1.getX()+(R2.getX()-R1.getX())/2,R1.getY()+(R2.getY()-R1.getY())/2)  # 创建一个中心点对象
    R3.move(0,15)
    L3=R3.clone()
    L3.move(80,0)

    ci1 = graphics.Circle(R3, 15)  # 创建一个圆对象,半径为20,位置为点对象
    ci2 = graphics.Circle(L3, 15)  # 创建一个圆对象,半径为20,位置为点对象
    ci1.setFill(graphics.color_rgb(0, 0, 0))  # 填充颜色设置颜色为黑色
    ci2.setFill(graphics.color_rgb(0, 0, 0))  # 填充颜色设置颜色为黑色
    ci1.setOutline(graphics.color_rgb(255, 255, 255))  # 设置边框颜色
    ci2.setOutline(graphics.color_rgb(255, 255, 255))  # 设置边框颜色
    ci1.draw(win)  # 将圆绘制到win窗口中
    ci2.draw(win)  # 将圆绘制到win窗口中



    #画笑脸
    xiao_p=p.clone()
    xiao_p.move(0,circ.getRadius()/2-20)#设置第一个椭圆的中心点

    t_s1=xiao_p.clone()
    t_s2=xiao_p.clone()
    t_s1.move(-55,-45)
    t_s2.move(55,45)
    o1 = graphics.Oval(t_s1, t_s2)  # 创建一个椭圆,
    # (长方形,一个左上角点,一个右下角点python简单代码案例python做个笑脸。如何中间画椭圆)
    o1.setFill(graphics.color_rgb(255, 255, 255))  # 填充颜色设置颜色为白色
    o1.setOutline(graphics.color_rgb(248, 255, 24))  # 设置边框颜色
    o1.draw(win)  # 将椭圆绘制到win窗口中

    xiao_p2=xiao_p.clone()
    xiao_p2.move(0, -(t_s2.getY()-t_s1.getY())/ 4+10 )  # 设置第二个椭圆的中心点

    t_s3 = xiao_p2.clone()
    t_s4 = xiao_p2.clone()
    t_s3.move(-60, -35)
    t_s4.move(60, 35)
    o2 = graphics.Oval(t_s3, t_s4)  # 创建一个椭圆,
    # (长方形,一个左上角点,一个右下角点。如何中间画椭圆)
    o2.setFill(graphics.color_rgb(248, 255, 24))  # 填充颜色设置颜色为白色
    o2.setOutline(graphics.color_rgb(248, 255, 24))#设置边框颜色
    o2.draw(win)  # 将椭圆绘制到win窗口中



    #画鼻子
    p2=p.clone()
    p2.move(0,10)
    bzi1=p2.clone()
    bzi2=p2.clone()
    bzi1.move(-7,-10)
    bzi2.move(7,10)
    bz= graphics.Oval(bzi1, bzi2)  # 创建一个椭圆,
    # (长方形,一个左上角点,一个右下角点。如何中间画椭圆)
    bz.setFill(graphics.color_rgb(0, 0,0))  # 填充颜色设置颜色为白色
    bz.draw(win)  # 将椭圆绘制到win窗口中

    # 绘制退出按键
    d1 = graphics.Point(100, 400)
    d2 = graphics.Point(190, 430)
    ct = graphics.Rectangle(d1, d2)  # 创建一个长方形对象,一个左上角点,一个右下角点
    ct.draw(win)  # 将长方形绘制到win窗口中

    o = graphics.Point(d1.getX() + (d2.getX() - d1.getX()) / 2, d1.getY() + (d2.getY() - d1.getY()) / 2)
    l = graphics.Text(o, "退出")  # 创建一个文本对象,位置为点对象
    l.draw(win)  # 将文本绘制到win窗口中

    while 1:
        s = win.getMouse()#接受鼠标事件

        if  s.getX()>=d1.getX() and s.getX()<=d2.getX():
            if s.getY()>=d1.getY() and s.getY()<=d2.getY():
                #退出
                break

        if s!=None:
            yd(s=s,p=p,circ=circ,oval1=oval1,oval2=oval2,ci1=ci1,ci2=ci2,o1=o1,o2=o2,bz=bz)#移动
            p=s.clone()#改变圆点坐标


    win.close()
if __name__ == '__main__':
    text01()
    pass

运行结果

 2.通过捕捉窗口鼠标点击事件中的两个点,来绘制笑脸

第一个点为中心点

第二个点为笑脸的边缘

代码:


import graphics
import math

def yd(s,p,circ,oval1,oval2,ci1,ci2,o1,o2,bz):#移动函数


    x=s.getX()-p.getX()
    y=s.getY()-p.getY()
    circ.move(x,y)
    oval1.move(x, y)
    oval2.move(x, y)
    ci1.move(x, y)
    ci2.move(x, y)
    o1.move(x, y)
    o2.move(x, y)
    bz.move(x,y)



def text01(win,p,p2):#绘制笑脸


    #画脸
    circ = graphics.Circle(p,p2)  # 创建一个圆对象,位置为点对象
    circ.setFill(graphics.color_rgb(248, 255, 24))  # 填充颜色设置颜色为黄色
    circ.draw(win)  # 将圆绘制到win窗口中

    #画眼睛
    R1=p.clone()
    R2=p.clone()
    L1=p.clone()
    L2=p.clone()

    R1.move(-p2*(3/5),-p2*(7/10))
    R2.move(-p2/5,-p2/10)
    L1.move(p2/5, -p2*(7/10))
    L2.move(p2*(3/5), -p2/10)
    oval1 = graphics.Oval(R1, R2)  # 创建一个椭圆,
    oval2 = graphics.Oval(L1, L2)  # 创建一个椭圆,
    # (长方形,一个左上角点,一个右下角点。如何中间画椭圆)
    oval1.setFill(graphics.color_rgb(255, 255, 255))  # 填充颜色设置颜色为白色
    #oval1.setOutline(graphics.color_rgb(248, 255, 24))  # 设置边框颜色
    oval1.draw(win)  # 将椭圆绘制到win窗口中
    oval2.setFill(graphics.color_rgb(255, 255, 255))  # 填充颜色设置颜色为白色
    #oval2.setOutline(graphics.color_rgb(248, 255, 24))  # 设置边框颜色
    oval2.draw(win)  # 将椭圆绘制到win窗口中

    #画眼珠
    R3=graphics.Point(R1.getX()+(R2.getX()-R1.getX())/2,R1.getY()+(R2.getY()-R1.getY())/2)  # 创建一个中心点对象
    R3.move(0,(R2.getY()-R1.getY())/4)
    L3=R3.clone()
    L3.move(L2.getX()-R2.getX(),0)

    ci1 = graphics.Circle(R3, (R2.getY()-R1.getY())/4)  # 创建一个圆对象,位置为点对象
    ci2 = graphics.Circle(L3, (R2.getY()-R1.getY())/4)  # 创建一个圆对象,位置为点对象
    ci1.setFill(graphics.color_rgb(0, 0, 0))  # 填充颜色设置颜色为黑色
    ci2.setFill(graphics.color_rgb(0, 0, 0))  # 填充颜色设置颜色为黑色
    ci1.setOutline(graphics.color_rgb(255, 255, 255))  # 设置边框颜色
    ci2.setOutline(graphics.color_rgb(255, 255, 255))  # 设置边框颜色
    ci1.draw(win)  # 将圆绘制到win窗口中
    ci2.draw(win)  # 将圆绘制到win窗口中



    #画笑脸
    xiao_p=p.clone()
    xiao_p.move(0,circ.getRadius()/3)#设置第一个椭圆的中心点

    t_s1=xiao_p.clone()
    t_s2=xiao_p.clone()
    t_s1.move(-p2*(11/20),-p2*(9/20))
    t_s2.move(p2*(11/20),p2*(9/20))
    o1 = graphics.Oval(t_s1, t_s2)  # 创建一个椭圆,
    # (长方形,一个左上角点,一个右下角点。如何中间画椭圆)
    o1.setFill(graphics.color_rgb(255, 255, 255))  # 填充颜色设置颜色为白色
    o1.setOutline(graphics.color_rgb(248, 255, 24))  # 设置边框颜色
    o1.draw(win)  # 将椭圆绘制到win窗口中

    xiao_p2=xiao_p.clone()
    xiao_p2.move(0, -(t_s2.getY()-t_s1.getY())/ 4+p2/10 )  # 设置第二个椭圆的中心点

    t_s3 = xiao_p2.clone()
    t_s4 = xiao_p2.clone()
    t_s3.move(-p2*(3/5), -p2*(7/20))
    t_s4.move(p2*(3/5), p2*(7/20))
    o2 = graphics.Oval(t_s3, t_s4)  # 创建一个椭圆,
    # (长方形,一个左上角点,一个右下角点。如何中间画椭圆)
    o2.setFill(graphics.color_rgb(248, 255, 24))  # 填充颜色设置颜色为白色
    o2.setOutline(graphics.color_rgb(248, 255, 24))#设置边框颜色
    o2.draw(win)  # 将椭圆绘制到win窗口中



    #画鼻子
    pt=p.clone()
    pt.move(0,p2/10)
    bzi1=pt.clone()
    bzi2=pt.clone()
    bzi1.move(-p2*(7/100),-p2/10)
    bzi2.move(p2*(7/100),p2/10)
    bz= graphics.Oval(bzi1, bzi2)  # 创建一个椭圆,
    # (长方形,一个左上角点,一个右下角点。如何中间画椭圆)
    bz.setFill(graphics.color_rgb(0, 0,0))  # 填充颜色设置颜色为白色
    bz.draw(win)  # 将椭圆绘制到win窗口中




if __name__ == '__main__':

    lowerImage =  graphics.Image(graphics.Point(0,0),"R-C.gif" )#图片对象
    lowerImage.move(lowerImage.getWidth()/2,lowerImage.getHeight()/2)

    win = graphics.GraphWin("qin", width=lowerImage.getWidth(), height=lowerImage.getHeight())  # 创建一个窗口对象,窗口大小为图片对象大小
   
    lowerImage.draw(win)将图片对象绘制到win窗口中

    # 绘制退出按键
    d1 = graphics.Point(100, 400)
    d2 = graphics.Point(190, 430)
    ct = graphics.Rectangle(d1, d2)  # 创建一个长方形对象,一个左上角点,一个右下角点
    ct.draw(win)  # 将长方形绘制到win窗口中

    o = graphics.Point(d1.getX() + (d2.getX() - d1.getX()) / 2, d1.getY() + (d2.getY() - d1.getY()) / 2)
    l = graphics.Text(o, "退出")  # 创建一个文本对象,位置为点对象
    l.draw(win)  # 将文本绘制到win窗口中

    list_d=[]
    while 1:
        s = win.getMouse()#接受鼠标事件
        if  s.getX()>=d1.getX() and s.getX()<=d2.getX():
            if s.getY()>=d1.getY() and s.getY()<=d2.getY():
                #退出
                break
        list_d.append(s)
        if len(list_d)==2:
            e=math.sqrt((list_d[0].getX()-list_d[1].getX())**2+(list_d[0].getY()-list_d[1].getY())**2)
            text01(win,list_d[0],e)
            list_d.clear()

    win.close()

运行结果:

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值