from tkinter import *
import time
alien = Tk()
alien.title("Alien")
c = Canvas(alien, height=300, width=400)
c.pack()
body = c.create_oval(100, 150, 300, 250, fill="green")
eye = c.create_oval(170, 70, 230, 130, fill="white")
eyeball = c.create_oval(190, 90, 210, 110, fill="black")
mouth = c.create_oval(150, 220, 250, 240, fill="red")
neck = c.create_line(200, 150, 200, 130)
hat = c.create_polygon(180, 75, 220, 75, 200, 20, fill="blue")
def mouth_open():
c.itemconfig(mouth, fill="black")
def mouth_close():
c.itemconfig(mouth, fill="red")
def blink():
c.itemconfig(eye, fill="green")
c.itemconfig(eyeball, state=HIDDEN)
def unblink():
c.itemconfig(eye, fill="white")
c.itemconfig(eyeball, state=NORMAL)
def steal_hat():
c.itemconfig(hat, state=HIDDEN)
c.itemconfig(words, text="GIVE ME MY HAT BACK")
def burp():
mouth_open()
c.itemconfig(words, text="Burp!!!")
time.sleep(1)
c.itemconfig(words, text="I'm an alien!")
mouth_close()
def blink2():
blink()
time.sleep(1)
unblink()
def eye_control(event):
key = event.keysym
if key == "Up":
c.move(eyeball, 0, -1)
elif key == "Down":
c.move(eyeball, 0, 1)
elif key == "Left":
c.move(eyeball, -1, 0)
elif key == "Right":
c.move(eyeball, 1, 0)
c.bind_all('<Key>', eye_control)
words = c.create_text(200, 280, text="I'm an alien!")
window = Tk()
window.title("Options")
btnBlink = Button(window, text="blink", command=blink2)
btnBlink.pack()
alien.mainloop()
window.mainloop()
我已经做了一个外星人,我想让用户能够偷外星人的帽子,让外星人打嗝,让外星人眨眼,并能够移动外星人的眼球。到目前为止,我已经使它能够控制他的眼球,但眨眼是不工作的。我已经移除了时间。睡眠(1) 在定义blink2的时候,这并没有改变什么。我怎样才能让外星人眨眼。任何帮助都将不胜感激。你知道吗
在您的函数
blink2
中,它从不要求刷新画布,因此您的外星人似乎从不闪烁。你知道吗您可以通过删除
time.sleep(1)
,并使用after
进行计时来解决这个问题。你知道吗要实现这一点,
blink2
可以如下所示:注意,使用
root
作为Tk()
的引用通常也是惯例。你知道吗相关问题 更多 >
编程相关推荐