Tkinter ana pencere resim ekleme

Selam arkadaşlar. foruma ve nete göz attım ama aradığımı bulamadım. Gerçekten tkinter için turtle modulünde olduğu gibi ana pencerenin arka plan resmini tamamıyla canvas ve label kullanmadan değiştirmenin bir yolu yok mu? arka plana resmi eklemek ve widget’ları bunun üzerine sorunsuz şekilde konumlandırmak istiyorum ama bunlar (label ve canvas) mecburi ise nasıl pencereyi tamamıyla kaplayıp widget’ları üstüne koyabilrim?

Merhaba, hoş geldiniz.

Aşağıdaki kodlar yardımıyla yapabilirsiniz ama widgetleri düzgün bir şekilde yerleştirmek için yerlerini hesaplamanız gerekecektir, bunun için en pratik yol, resmin boyutuna göre widgetlerin nerede olması gerektiğini belirlemektir.

Normalde widgetler bir frame’in içine yerleştirilip, create_window ile ekrana eklenebilir ancak bu kez de frame'in arka plan rengi oluşacaktır ve bu da çirkin bir görüntü oluşturacaktır.

Diğer bir yöntem, Label kullanmak ama ben canvas'ı daha kullanışlı buluyorum.

Kodlar:

import tkinter as tk

root = tk.Tk()
root.resizable(width=False, height=False)

img = tk.PhotoImage(file="img.png")
width, height = img.width(), img.height()
canvas = tk.Canvas(root, width=width, height=height)
canvas.pack()
canvas.create_image((0, 0), image=img, anchor="nw")

entry = tk.Entry(master=canvas)

button = tk.Button(master=canvas, text="hello")

canvas.create_window((width / 2, 50), window=button, anchor="center")
canvas.create_window((width / 2, 100), window=entry, anchor="center")

root.mainloop()

Ekran Görüntüsü:

1 Beğeni

Bu arada turtle tamamen tkinter üzerine kurulu, bu yüzden canvas veya label kullanmak istemeyip turtle modülünü örnek göstermek yanlış.

1 Beğeni

Bunu yeni öğrendim. Demek istediğimin anlaşıldığını sanıyorum. Yanlışı ve doğrusundan cok sadece turtle’deki .bgpic() gibi bir metodla mümkü mü diye sormuştum.

Anladım. Ama niye canvas kullanmak istemediğinizi anlamadım.

Mümkün, canvas’ı oluşturan kodu bir fonksiyon haline getirebilirsiniz.