python tkinter画笑脸_一个Python tkinter笑脸,按钮可以改变手势

The only difficulty i've encountered is whenever i run my program,

there's an error name 'SmileyFace' is not defined ...

当我尝试运行它时,在修复了缩进问题之后,我得到NameError: name 'righteye' is not defined。修复后,由于结尾缺少win.mainloop(),所以在运行它时根本没有发生任何事情。修复后,由于调用了.pack而不是.pack(),我没有看到任何按钮。等等。在

你把这个计划安排得很糟糕。SmileyFace构造函数应该绘制出基本的面部,并将右眼和嘴巴对象保存为属性,而不是尝试将它们作为全局变量处理。下面,我采用一种更简单的方法,即使用标记来避免属性和全局变量一起出现:from tkinter import *

class SmileyFace:

def __init__(self, canvas):

self.canvas = canvas

canvas.create_oval(70, 70, 350, 350, fill='yellow')

canvas.create_oval(125, 125, 175, 175, fill='black', tags='left')

canvas.create_oval(225, 125, 275, 175, fill='black', tags='right')

canvas.create_line(125, 250, 275, 250, width=5, tags='mouth')

def smile(self):

self.canvas.delete('right||mouth')

self.canvas.create_oval(225, 125, 275, 175, fill='black', tags='right')

self.canvas.create_arc(125, 225, 275, 275, extent=-180, width=5, fill='white', tags='mouth')

def sad(self):

self.canvas.delete('right||mouth')

self.canvas.create_oval(225, 125, 275, 175, fill='black', tags='right')

self.canvas.create_arc(125, 250, 275, 300, extent=180, width=5, fill='white', tags='mouth')

def wink(self):

self.canvas.delete('right||mouth')

self.canvas.create_line(225, 140, 250, 165, 275, 140, width=5, smooth='true', tags='right')

self.canvas.create_line(125, 250, 275, 250, width=5, tags='mouth')

def grin(self):

self.canvas.delete('right||mouth')

self.canvas.create_oval(225, 125, 275, 175, fill='black', tags='right')

self.canvas.create_line(125, 250, 200, 250, 275, 215, width=5, smooth='true', tags='mouth')

def main():

win = Tk()

canvas = Canvas(win, width=800, height=800)

canvas.pack()

smiley = SmileyFace(canvas)

Button(win, text='Smile', command=smiley.smile).pack()

Button(win, text='Sad', command=smiley.sad).pack()

Button(win, text='Wink', command=smiley.wink).pack()

Button(win, text='Grin', command=smiley.grin).pack()

Button(win, text='Quit', command=win.destroy).pack()

win.mainloop()

main()

1826ebc92e388254e913788aad3a3d00.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值