Hintergrund, Koordinaten

Fragen zu Tkinter.
Antworten
Peak_me
User
Beiträge: 92
Registriert: Sonntag 27. Januar 2008, 03:09

Hallo!

Ich möchte ein Hintergrundbild erzeugen und darauf 20 Bilder an genauen Koordinaten platzieren.

Leider kennt Frame nicht die Option "image", sondern nur "Label".
Und ich weiß nicht, wie man auf einem Label ein anderes Label genau an einer Koordinate erstellt.

Es soll also sowas sein wie:

Code: Alles auswählen

test=Frame(root,image=bild)
test2l=Label(test,image=bild2, x=10, y=20)

Danke schonmal!,
Gruß
peak
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Ich würde dafür ein Canvas-Widget nehmen. Das Hintergrundbild zuerst, die Größe des Canvas entsprechend anpassen - das ist dann sozusagen der von dir gewünschte "Frame".
Dann die anderen 20 Bilder einfach darauf platzieren.
Peak_me
User
Beiträge: 92
Registriert: Sonntag 27. Januar 2008, 03:09

Ich kannte dieses Canvas-Zeug noch nicht.
Jetzt hab ichs mir mal auf
http://home.foni.net/~heikos/tkinter/node33.html
durchgelesen und es funktioniert wirklich! :)
danke für die einwandfreie Lösung!
Peak_me
User
Beiträge: 92
Registriert: Sonntag 27. Januar 2008, 03:09

Es ist ein Problem aufgetaucht.
Ich habe als erstes Bild den Hintergrund eingefügt.
Darauf möchte ich sowohl das erste Bild (photo1) als auch das zweite Bild (photo2) einfügen.
Doch es erscheint immer nur das zweite Bild, bzw. das letzte Bild was ich auf dem Hintergrund einfügen will.
Wie kann ich alle Bilder anzeigen lassen?

Hier mein verwendetes Programm:

Code: Alles auswählen

from Tkinter import *
import ImageTk 

canvas=Canvas(width=1000, height=2000, bg='white')
canvas.pack()

hintergrund= ImageTk.PhotoImage(file= "C:/hintergrund.jpg") 
canvas.create_image(0,0, image=hintergrund, anchor=NW)

x=115
y=119

photo1= ImageTk.PhotoImage(file= "C:/bla.jpg") 
canvas.create_image(115,119, image=photo1, anchor=NW)

x=200
y=300

photo2= ImageTk.PhotoImage(file= "C:/bla2.jpg") 
canvas.create_image(x,y, image=photo2, anchor=NW)

Danke schonmal!,
Gruß
peak
Peak_me
User
Beiträge: 92
Registriert: Sonntag 27. Januar 2008, 03:09

Äh, ich hab nen Fehler gemacht.
Wenn man unterschiedliche Bildbezeichnungen nimmt (photo1, photo2), dann funktioniert es;
aber nicht, wenn man "photo" nacheinander ein anderes Bild zuordnet.

Code: Alles auswählen

from Tkinter import *
import ImageTk 

canvas=Canvas(width=1000, height=2000, bg='white')
canvas.pack()

hintergrund= ImageTk.PhotoImage(file= "C:/hintergrund.jpg") 
canvas.create_image(0,0, image=hintergrund, anchor=NW)

x=100
y=200

for i in range(0,1):

    x+=50
    y+=40

    if i==0:
        photo= ImageTk.PhotoImage(file= "C:/bla.jpg") 

    if i==1:
        photo= ImageTk.PhotoImage(file= "C:/bla2.jpg") 

    canvas.create_image(x,y, image=photo, anchor=NW)
also einfach das im vorherigen Beitrag genannte Programm ignorieren...
Antworten