2
所以我在Python中編寫Pacman只是爲了好玩,我想用Tkinter圖形創建pacman的開放面(當他吃東西的時候)。我如何繪製一張張開的臉?我想使用canvas.create_arc創造了張嘴,但它不能正常工作:(在Tkinter中繪製Pacman's Face
任何幫助嗎?謝謝!
所以我在Python中編寫Pacman只是爲了好玩,我想用Tkinter圖形創建pacman的開放面(當他吃東西的時候)。我如何繪製一張張開的臉?我想使用canvas.create_arc創造了張嘴,但它不能正常工作:(在Tkinter中繪製Pacman's Face
任何幫助嗎?謝謝!
你是正確的,你會使用create_arc
方法。將開始45
和extent
到270
,它看起來像吃豆子正面臨着張着嘴的權利。
既然你剛開始學習我不會發布確切的代碼,這樣你就會有機會弄明白
這將工作:
import sys
if sys.hexversion > 0x02ffffff:
from tkinter import *
else:
from Tkinter import *
class Application(Frame):
#Creates an arc
def draw_pieslice(self, canv,x,y,rad):
return canv.create_arc(x-rad, y-rad, x+rad, y+rad, fill='yellow', style=PIESLICE, start=self.start_angle, extent=self.stop_angle)
#To toggle the start and extent values of the arc, such that the pacman opens and closes the mouth
#Initially the mouth will be completely closed, but as the value is toggled we will get a 45deg space (mouth opens)
def toggle_mouth(self):
if self.start_angle is 1:
self.start_angle = 45
self.stop_angle = 270
else:
self.start_angle = 1
self.stop_angle = 359
#moves the pacman body horizontally
def movecircle(self):
self.repeat = self.repeat - 1 #sets a limit to horizontal movement
self.canvas.move(self.PacMouth,1,0)
if (self.repeat % 10) is 0: #Adjusting the value in here, will help to adjust the mouth movement speed with the horizontal body movement
self.toggle_mouth()
self.canvas.itemconfig(self.PacMouth, start = self.start_angle, extent = self.stop_angle)
if self.repeat is not 0:
self.after(10, self.movecircle) #By adjusting the time, we can adjust the horizontal movement speed
def __init__(self, master=None):
Frame.__init__(self, master)
self.start_angle = 1
self.stop_angle = 359
self.canvas = Canvas(width=800, height=480, bg='black')
self.canvas.pack(expand=YES, fill=BOTH)
text = self.canvas.create_text(50,10, text="Pacman! Yeah!", fill="white")
self.PacMouth = self.draw_pieslice(self.canvas,100,240,20)
self.repeat = 600
self.movecircle()
root = Tk()
root.config(bg = "black")
root.title("Im on stack overflow")
root.geometry('{}x{}'.format(800, 480))
root.resizable(width=False, height=False)
app = Application(master=root)
app.mainloop()
你試過了什麼?它是如何失敗的? – sarnold
更重要的是,你如何爲Pacman太太畫弓? –