Seite 1 von 1
Bild in leinwand einfügen
Verfasst: Donnerstag 13. November 2014, 09:14
von Humpanickel
Hallo,
ich habe eine Leinwand erzeugt, auf der in eine Grafik in Form eines Punktes mit der Maus bzw. den Pfeilen bewegen kann. Jetzt würde ich gerne den Hintergrund der erzeugten Leinwand bearbeiten. Ich kann zwar die Hintergrundfarbe verändern, jedoch kein Bild einfügen als Zeichenfläche:
# Leinwand zum Zeichnen
canvas = Canvas(master=tkFenster, bg='blue')
canvas.place(x=10, y=10, width=500, height=500)
Ich wäre euch wirklich sehr dankbar, wenn ihr mir helfen könntet ;D
Re: Bild in leinwand einfügen
Verfasst: Donnerstag 13. November 2014, 09:47
von BlackJack
@Humpanickel: Ein Bild kann man mit der `create_image()`-Methode auf ein `Canvas`-Exemplar bringen.
`place()` sollte man nicht verwenden. Absolutes platzieren von GUI-Elementen zieht nur unnötig Arbeit nach sich, zum Beispiel dass man dann die grösse des Fensters auch absolut selber angeben muss, statt Tk automatisch ermitteln zu lassen wie gross das Fenster sein muss, damit alles hinein passt. Ausserdem erstellt man mit `place()` GUIs die nur auf dem eigenen Rechner passend aussehen, oder zumindest nur auf solchen bei denen die ganzen Rahmenbedingungen (Displaygrösse/-auflösung, Schrifteinstellungen, Betriebssystem bzw. Fensterverwaltung, …) sehr ähnlich sind. Auf anderen kann es komisch aussehen oder sogar unbrauchbar werden.
Der Name `tkFenster` legt einen Blick in den
Style Guide for Python Code nahe.
Re: Bild in leinwand einfügen
Verfasst: Freitag 14. November 2014, 17:37
von Ene Uran
Hier ist mal ein Beispiel wie man das so machen kann:
Code: Alles auswählen
''' tk_Canvas_Background_Image1.py
use a Tkinter canvas for a background image
for result see http://prntscr.com/12p9ux
'''
try:
# Python2
import Tkinter as tk
except ImportError:
# Python3
import tkinter as tk
root = tk.Tk()
root.title('background image')
# pick a .gif image file you have in the working directory
fname = "Flowers.gif"
bg_image = tk.PhotoImage(file=fname)
# get the width and height of the image
w = bg_image.width()
h = bg_image.height()
# size the window so the image will fill it
root.geometry("%dx%d+50+30" % (w, h))
cv = tk.Canvas(width=w, height=h)
cv.pack(side='top', fill='both', expand='yes')
cv.create_image(0, 0, image=bg_image, anchor='nw')
# add canvas text at coordinates x=15, y=20
# anchor='nw' implies upper left corner coordinates
cv.create_text(15, 20, text="Python Greetings", fill="red", anchor='nw')
# now add some button widgets (optional)
btn1 = tk.Button(cv, text="Click")
btn1.pack(side='left', padx=10, pady=5, anchor='sw')
btn2 = tk.Button(cv, text="Quit", command=root.destroy)
btn2.pack(side='left', padx=10, pady=5, anchor='sw')
root.mainloop()
Re: Bild in leinwand einfügen
Verfasst: Donnerstag 20. November 2014, 22:57
von Humpanickel
Vielen dank, aht mir sehr geholfen
