Python tkinter ile koordinat sistemi oluşturmak

omsal

Üye
Katılım
26 Ocak 2024
Mesajlar
14
Bir özellik eklemek istiyorum mesela fare imleci karelerin köşelerine geldiğinde oralara takılsın yanı orda 1 saniye falan dursun sonra geri hareketimi sağlamak istiyorum bunu nasıl yapabilirim ?
 

Ekler

  • 2.png
    2.png
    146.3 KB · Görüntüleme: 50
Teşekkür ederim.
Hocam şimdide noktanın kordinatlarını almam gerekiyor ama program farenin kordinatlarını veriyor bunu nasıl ayarlayabilirim ?


yaptım ama şimdide orta nokta y -0.0 gösteriyor sebep ne olabilir ?
 

Ekler

  • 3.png
    3.png
    136.6 KB · Görüntüleme: 37
Son düzenleme:
KOD BU ARKADAŞLAR

python tkinter kordinat sistemi:
import tkinter as tk
import tkinter.ttk as ttk
from tkinter import Canvas
import math

pencere = tk.Tk()
pencere.title("Koordinat Sistemi")

X = 800
Y = 600


can = Canvas(pencere, width=X+1, height=Y+1, bg="white")
can.pack()


can.create_rectangle(800, 600, can.winfo_width(), can.winfo_height(), fill="white")
can.create_line(0, 300, 800, 300, fill="black", width=2, arrow=tk.BOTH)
can.create_line(400, 0, 400, 600, fill="black", width=2, arrow=tk.BOTH)

width = 800
height = 600
cell_size = 25  # Her bir hücrenin boyutu

# Dikey çizgileri çizme
for x in range(0, 800, cell_size):
    can.create_line(x, 0, x, height, fill="black",dash=(4, 2))

# Yatay çizgileri çizme
for y in range(0, 600, cell_size):
    can.create_line(0, y, width, y, fill="black",dash=(4, 2))


# nokta oluşturmak
ov_size=(6,6)

def get_oval_centre(coords):
    x = (coords[0] + coords[2])//2
    y = (coords[1] + coords[3])//2
    return [x,y]

def set_oval_coords(t, xy):
    x,y = xy
    can.coords(t, (x-5, y-5, x+5, y+5) )



def evn(e):
    xx = can.canvasx(e.x)
    yy = can.canvasy(e.y)
    #cc = c.find_closest(xx,yy)
    t = can.find_withtag('point')
    #c.move(t, 20,20)
    #print(c.find_all())
    #c.itemconfig(t, )
    oc = get_oval_centre(can.bbox(t))
    oc[0] += cell_size
    oc[1] += cell_size

def mot(e):
    xg = (e.x+cell_size/2)//cell_size
    yg = (e.y+cell_size/2)//cell_size
    t = can.find_withtag('point')
    set_oval_coords(t, (xg*cell_size, yg*cell_size))
    # Fare imlecinin yeni konumunu ekrana yazdır
    print(f"Fare İmleci Konumu: ({xg-16}, {(yg-abs(12))*-1})")

 # Label içeriğini güncelle
    mouse_position_label.config(text=f"X: Y: ({xg-16}, {(yg-abs(12))*-1})")
    mouse_position_label.pack(side="bottom")  # Metni sola hizala


# Fare pozisyonunu gösterecek Label widget'ı oluştur
mouse_position_label = tk.Label(pencere, text="X: Y: (0, 0)", font=("Helvetica", 14))
mouse_position_label.pack(pady=25)
mouse_position_label.pack(side="left")  # Metni sola hizala

#Fare Tıklama Olayı
can.bind('<Button-1>', evn)
can.bind('<Motion>', mot)


ov = can.create_oval(-3,-3, 3, 3, tags='point', fill='red')


def fare_konumunu_guncelle(event):
    x = (event.x + cell_size / 2) // cell_size - 16
    y = ((event.y + cell_size / 2) // cell_size - abs(12)) * -1
    fare_konumu_etiketi.config(text=f"Fare Konumu: x={x}, y={y}")

    # En yakın 25 pixel aralıklı noktanın koordinatlarını bul
    nearest_x = round(event.x / 25) * 25
    nearest_y = round(event.y / 25) * 25

    # Canvas üzerine nokta çiz
    can.create_oval(nearest_x - 10, nearest_y - 10, nearest_x + 10, nearest_y + 10, outline="red")
fare_konumu_etiketi = tk.Label(pencere, text="Fare Konumu: x=0, y=0", font=("Helvetica", 14))
fare_konumu_etiketi.pack(pady=20)

# Fare hareketlerini dinlemek için canvas'a bağlanma
can.bind("<Button-1>", fare_konumunu_guncelle)

pencere.mainloop()
 
def evn(e):
xx = can.canvasx(e.x)
yy = can.canvasy(e.y)
#cc = c.find_closest(xx,yy)
t = can.find_withtag('point')
#c.move(t, 20,20)
#print(c.find_all())
#c.itemconfig(t, )
oc = get_oval_centre(can.bbox(t))
oc[0] += cell_size
oc[1] += cell_size

def mot(e):
xg = (e.x+cell_size/2)//cell_size
yg = (e.y+cell_size/2)//cell_size
t = can.find_withtag('point')
set_oval_coords(t, (xg*cell_size, yg*cell_size))
# Fare imlecinin yeni konumunu ekrana yazdır
print(f"Fare İmleci Konumu: ({xg-16}, {(yg-abs(12))*-1})")
def env ve def mot fonksiyonları arasında bazı sorunlar var bunları halledersen kodun cok daha akıcı olur.
 

Forum istatistikleri

Konular
6,414
Mesajlar
109,170
Üyeler
2,645
Son üye
zeus_55

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top