回答
這對舊的tkinter來說無疑是可能的!這應該工作,還沒有能夠測試PIL的東西,但我沒有測試。按左鍵移動圖像。
from Tkinter import *
from PIL import Image, ImageTk
class App:
def __init__(self,master):
self.xRes = 500
self.yRes = 500
master.geometry(str(self.xRes)+"x"+str(self.yRes))
#if you didnt have PIL (gif only): myImage = PhotoImage(file="image.gif")
myImage = ImageTk.PhotoImage(Image.open("image.jpg"))
self.photoFrame = Label(master,image = myImage,width = 300, height = 300)
self.photoFrame.place(x=-310, y=0)
self.photoFrame.image = myImage
self.photoFrame.focus_set()
self.photoFrame.bind("<Left>",self.animate)
def moveImage1(self):
cur = int(self.photoFrame.place_info()["x"])
pWidth = str(self.photoFrame.cget("width"))
print(pWidth)
while cur != (self.xRes/2) - (int(pWidth)/2):
cur = int(self.photoFrame.place_info()["x"])
self.photoFrame.place(x=cur+2, y=0)
print(cur)
root.update()
def animate(self,event):
self.moveImage1()
root = Tk()
app = App(root)
root.mainloop()
如果你想添加更多的動畫,你會建立更多的方法,如moveImage1,每個動畫一個。然後,只要打電話給他們你喜歡什麼。該方法獲取Label小部件的當前x位置,然後將其增加2.然後,調用root.update()來刷新窗口。讓我知道你是否需要任何額外的東西。
而不是while循環,您可以使用'after'將圖像移動一個單位,然後讓方法使用'after'來安排自己在幾十毫秒內再次運行,具體取決於您希望它移動的速度。 –
是真的!我不確定是否需要它,tkinter無法快速移動圖像 – mbdavis
你是什麼意思,它不能快速移動圖像?你需要多快?我可以每隔幾毫秒左右將它移動儘可能多的像素。簡單的動畫大概可以達到60fps或更高。 –
下面是從左邊移動到畫布的中心圖像的例子:
import Tkinter as tk
imagedata = '''
R0lGODlhEAAQAMQZAMPDw+zs7L+/v8HBwcDAwLW1teLi4t7e3uDg4MLCwuHh4e7u7t/f38TExLa2
tre3t7i4uL6+vu/v77q6uu3t7b29vby8vLm5ubu7u+3t7QAAAAAAAAAAAAAAAAAAAAAAACH5BAEA
ABkALAAAAAAQABAAAAWNYCaOZFlWV6pWZlZhTQwAyYSdcGRZGGYNE8vo1RgYCD2BIkK43DKXRsQg
oUQiFAkCI3iILgCLIEvJBiyQiOML6GElVcsFUllD25N3FQN51L81b2ULARN+dhcDFggSAT0BEgcQ
FgUicgQVDHwQEwc+DxMjcgITfQ8Pk6AlfBEVrjuqJhMOtA4FBRctuiUhADs=
'''
class Example(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.canvas = tk.Canvas(self)
self.canvas.pack(side="bottom", fill="both", expand=True)
self.image = tk.PhotoImage(data=imagedata)
image_id = self.canvas.create_image(0,0, anchor="nw", image=self.image)
self.move_to_center(image_id)
def move_to_center(self, id):
(x0,y0) = self.canvas.coords(id)
if x0 < int(self.canvas.winfo_width()/2):
self.canvas.move(id, 1,0)
self.after(10, lambda id=id: self.move_to_center(id))
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()
- 1. 幻燈片動畫故障
- 2. 動畫故障
- 3. 動畫故障
- 4. jQuery動畫故障?
- 5. jQuery動畫故障
- 6. UIView調整動畫故障
- 7. 查看動畫故障
- 8. 與UIImageView動畫故障
- 9. jQuery動畫重複故障
- 10. iOS 7 UISearchDisplayController動畫故障
- 11. Jquery滑塊動畫故障
- 12. 網絡動畫故障
- 13. CSS3 Prism動畫故障
- 14. 故障與參照
- 15. 故障與對照
- 16. JQUERY:按鈕故障動畫圖片的點擊
- 17. 與UIImageView上的動畫故障
- 18. SVG懸停動畫故障問題
- 19. Safari動畫故障 - 白色閃爍
- 20. css3 div動畫故障排除
- 21. UIPangesture <--> UIView動畫故障
- 22. jQuery外部動畫故障CSS
- 23. iOS - 使用UIToolbar動畫故障
- 24. UITableView幀高度動畫故障
- 25. CSS動畫中的輕微故障
- 26. jQuery Accordion'height:auto'會導致動畫故障
- 27. 以動畫爲中心的故障
- 28. jQuery動畫:時間延遲故障
- 29. iOS動畫故障,Y座標問題
- 30. 照片App動畫建議
,如果你發佈一些你已經嘗試過的片段的人們普遍讚賞。我會推薦使用像'pygame'這使得這個輕鬆簡單。不知道爲什麼你使用PIL然後:o – enpenax
哦對不起。我使用PIL,因爲我認爲這是我可以將圖像文件轉換爲Python的唯一方式。我覺得它特別奇怪,我可以用pygame實現嗎? –