Merhabalar, Python’da yeni sayılırım. Bir proje denemek istedim. Tkinter ile olduştuduğum pencere içerisine koyduğum resmin butona bastığım zaman ileri gitmesini istiyorum.
from threading import Thread
from tkinter import *
from time import sleep
a = Tk()
a.geometry("300x200")
a.title("ilk oyun denemem")
a.grid()
foto = PhotoImage( file = "ma.png")
resim = Label(a, image = foto)
resim.place(relx = 0.2, rely = 0.2)
button1 = Button()
button1.config(text = "ileri")
button1.place(relx = 0.91, rely = 0.75)
def start(event):
global hold_on1
hold_on1 = True
while hold_on1:
if hold_on1 == True:
t = 0
while t <=0.5:
print(t)
t = t+0.01
sleep(0.1)
def end(event):
global hold_on1
hold_on1 = False
if hold_on1 == False:
print("DUR")
button1.bind(
"<ButtonPress>",
lambda event: Thread(target=start, args=(event, )).start()
)
button1.bind("<ButtonRelease>", end)
kodlarım bu şekilde. Resim için kullandığım “relx” ifadesini t’ye eşitleyip sayaç mantığı ile yükseltmeyi düşündüm. Başarılı olamadım. Resmi nasıl hareket ettirebilirim? Yardımlarınız için şimdiden teşekkürler
Merhaba, kodlarınızı aşağıdaki gibi değiştirdim, bir deneyim isterseniz.
import tkinter as tk
root = tk.Tk()
root.geometry("800x800")
relx = 0.2
on_hold = True
foto = tk.PhotoImage(file="img.png")
resim = tk.Label(root, image=foto)
resim.place(relx=relx, rely=0.2)
button1 = tk.Button(master=root, text="ileri")
button1.place(relx=0.91, rely=0.75)
def start(event):
global on_hold, relx
if not on_hold:
on_hold = True
return
relx += 0.0001
resim.place(relx=relx, rely=0.2)
root.after(1, lambda: start(event))
def end(event):
global on_hold
on_hold = False
button1.bind("<ButtonPress>", start)
button1.bind("<ButtonRelease>", end)
root.mainloop()
ilginiz için gerçekten çok teşekkür ederim… sağolun
Mesela şu kodları da inceleyebilirsiniz. İleri
, Geri
, Yukarı
, Aşağı
için ayrı ayrı fonksiyon tanımlamanıza gerek yok.
import tkinter as tk
root = tk.Tk()
root.geometry("800x800")
relx = 0.2
rely = 0.2
on_hold = True
foto = tk.PhotoImage(file="img.png")
resim = tk.Label(root, image=foto)
resim.place(relx=relx, rely=0.2)
frames = []
for i in range(3):
frame = tk.Frame(master=root)
frame.pack()
frames.append(frame)
buttons = []
for text, master in zip(
["ileri", "geri", "yukarı", "aşağı"],
[frames[1], frames[1], frames[0], frames[2]]
):
button = tk.Button(master=master, text=text)
button.pack(side="right")
buttons.append(button)
def start(event):
global on_hold, relx, rely
if not on_hold:
on_hold = True
return
if event.widget["text"] == "ileri":
relx += 0.0001
elif event.widget["text"] == "geri":
relx -= 0.0001
elif event.widget["text"] == "yukarı":
rely -= 0.0001
elif event.widget["text"] == "aşağı":
rely += 0.0001
resim.place(relx=relx, rely=rely)
root.after(1, lambda: start(event))
def end(event):
global on_hold
on_hold = False
for i in buttons:
i.bind("<ButtonPress>", start)
i.bind("<ButtonRelease>", end)
root.mainloop()
Not: Hatta dilerseniz düğme yerine yön tuşları da kullanabilirsiniz. Ki bence daha iyi olur.
1 Beğeni
Evet çok daha kullanışlı görünüyor. Yardımlarınız için çok teşekkürler