Seite 1 von 1

Unter Tk ein Hintergrundbild im Hauptfenster hinterlegen?!

Verfasst: Donnerstag 26. Juni 2003, 09:59
von Hamsterbacke
Hallo zusammen,

ich würde gerne in meinem Tk-Programm ein Hintergrundbild hinterlegen, weiss allerdings nicht wie!

Ist es überhaupt möglich ein Hintergrundbild zuverwenden wenn man mehrere Frames in dem Hauptfenster hat? Wenn ja, dann helft mir bitte!

gruss
Hamsterbacke

Verfasst: Donnerstag 26. Juni 2003, 15:04
von lbuega
mmh, interessante Idee.
Aber von seitens Tkinter (falls du das benutzen solltest) wird es wohl nicht gehen, da man die Widgets nicht in Ebenen sonderen nur nebeneinander anordnen kann. Sonst könntest Du nämlich z.B. ein Label-Widget mit dem Bild nehmen und darüber die anderen Widgets aufbauen - aber spätestens dann scheitert man wohl daran, dass die Widgets nicht transparent sind...

Auch über die bg (background) -Option der Widgets klappt es leider nicht, da die nur ihnen bekannte Farben akzeptieren (als Text oder Oktalzahl).

Ansonsten hab ich auch keine Idee mehr wie das noch realisierbar sein könnte.

Verfasst: Freitag 4. März 2005, 13:21
von piepstachel
Hallo Hamsterbacke,

Deine Frage ist zwar schon ein wenig älter aber deshalb nicht minder interessant. Ich habe in dem Buch "Objektorientierte Programmierung mit Python" von Michael Weigend (ISBN 3-8266-0966-2) folgende Empfehlung gefunden:
  • Erzeugen Sie einen Canvas und packen Sie ihn in das Applikationsfenster
    Generieren Sie ein PhotoImage-Objekt mit der Hintergrund-Abbildung
    Setzen Sie mit der Methode create_image() das Bild auf den Canvas
    Erzeugen Sie weitere Widgets
    Plazieren Sie die Widgets mit Hilfe der Methode create_window() auf dem Canvas
Vielleicht hilft es ja weiter.

Gruß piepstachel

Verfasst: Freitag 11. März 2005, 19:11
von rayo
Hi

Es geht einfacher, erstell einfach als erstes ein Label und erstell die anderen Widgets da drin:

Code: Alles auswählen

root = Tk()
pi = PhotoImage(file='1.gif')

background = Label(root, image=pi)
background.pack()

entry = Entry(background)
entry.pack(padx=10,pady=10)

root.mainloop()
gruss