Merhabalar. İki parklı py dosyası var. biri png imaj dosyasının dönmesi, diğeri de hareket etmesi. Acaba aynı anda imaj dosyası hem dönüp hem de hareket edebilir mi?
Hareket eden py dosyası
from tkinter import *
import time
root = Tk()
def next_image(event=None):
canvas1.move(item, 10, 0)
image1 = "bir.png"
photo1 = PhotoImage(file=image1)
width1 = 800
height1 = 600
canvas1 = Canvas(width=width1, height=height1)
canvas1.pack(expand=1, fill=BOTH) # <--- Make your canvas expandable.
item = canvas1.create_image(50, 50, image=photo1) # <--- Save the return value of the create_* method.
canvas1.bind('<Button-1>', next_image)
root.mainloop()
Evet aynı anda resim hem dönüp hem de doğrusal hareket yapabilir. Aşağıdaki kodu bir inceleyin isterseniz. Resmin üzerine tıklayıp, mausu basılı tuttuğunuz sürece dönme ve sağa doğru hareket etme işlemi gerçekleşecektir.
Bu arada aşağıda kullandığım kodu bir üstte kullandığım koda tercih ederim.
Yaptığım değişiklikler şunlar:
Döndürme işlemi bir önceki döndürülen nesne üzerinde gerçekleşiyordu. Yani bir resmi döndürünce, bir sonraki dönme hareketi bu yeni konuma göre yapılıyordu, bu da resmin bozulmasına neden oluyordu. Bunu iptal ettim, döndürme işlemi, resmin orijinal hali üzerinden gerçekleşecek, böylece resimde bozulmalar meydana gelmeyecek.
Dönme açısını, birim zamanda x ve y eksenleri üzerinde yapılacak doğrusal hareket miktarını, koordinatları ve zamanı parametre olarak girebilirsiniz.
Hocam merhaba. İnternette tkinkter rotation animasyonu oluşturmanın yollarını ararken sizin cevabınıza denk geldim. Verdiğiniz çözümü kendi projemde denedim. Öncelikle elinize sağlık. Fakat ben tıklama ile başlayıp tıklamayı bırakınca durmasını değil de, benim istediğim anda başlayıp, istediğim yerde durmasını istiyorum. Nasıl bir yapı kurmam gerekir? Amacım bir çark görselini Tkinter ile ekrana yansıtmak, butona tıkladığımda çarkın dönmeye başlaması ve istediğim konuma geldiğinde kendiliğinden durması.
Yapmanız gereken, bind ile canvas nesnesine atanan hareketi başlatma ve durdurma işlevlerini devre dışı bırakmak. Bir tane düğme oluşturup hareketi başlatma işlevini o düğmeye atayabilirsiniz. Dönen çarkı durdurmak için de belirli bir açı değerini kullanabilirsiniz. Çarkın ilk konumu ile son konumu arasındaki açısal fark, sizin belirlediğiniz açıya geldiğinde dönme işlemi otomatik olarak sonlandırılabilir.
Mevcut yapıyı referans alabilir, üzerinde bir takım değişiklikler yaptıktan sonra da istediğiniz yapıyı elde edebilirsiniz.