Unter Tk ein Hintergrundbild im Hauptfenster hinterlegen?!

Fragen zu Tkinter.
Antworten
Hamsterbacke

Donnerstag 26. Juni 2003, 09:59

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
lbuega
User
Beiträge: 75
Registriert: Dienstag 15. April 2003, 08:51
Wohnort: Weissach

Donnerstag 26. Juni 2003, 15:04

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.
piepstachel
User
Beiträge: 13
Registriert: Mittwoch 9. Juni 2004, 10:18
Wohnort: 06463 Reinstedt

Freitag 4. März 2005, 13:21

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
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Freitag 11. März 2005, 19:11

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
Antworten