Python Tkinter Background image

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • xavizara
    New Member
    • Mar 2013
    • 1

    Python Tkinter Background image

    below is my code of a simple program where you can control a circle with buttons WASD. my question is, how do I add a background image? Please help me. :)


    Code:
    from Tkinter import *
    import time, math, random
    
    def timerFired(previousTime):
    	currentTime = time.time()
    	dt = currentTime - previousTime
    	canvasWidth = int(canvas.cget("width"))
    	canvas.after(40, timerFired, currentTime)
    	redrawAll()
    def key(event):
    	if event.char == "a":
    		for i in range(len(canvas.data.x)):
    			canvas.data.x[i] = canvas.data.x[i] - 5
    	elif event.char == "d":
    		for i in range(len(canvas.data.x)):
    			canvas.data.x[i] = canvas.data.x[i] + 5
    	elif event.char == "w":
    		for i in range(len(canvas.data.x)):
    			canvas.data.y[i] = canvas.data.y[i] - 5
    	elif event.char == "s":
    		for i in range(len(canvas.data.x)):
    			canvas.data.y[i] = canvas.data.y[i] + 5
    	redrawAll()
    
    def drawBackground():
    	pass
    
    def redrawAll():
    	canvas.delete(ALL)
    	drawBackground()
    	canvas.create_text(int(canvas.cget("width")) - 10,
    					   int(canvas.cget("height")) - 10,
    					   anchor=SE,
    					   text = "X = " + str(canvas.data.x) + " Y = " + str(canvas.data.y))
    	for i in range(len(canvas.data.x)):
    		canvas.create_oval(canvas.data.x[i] - canvas.data.r[i],
    						   canvas.data.y[i] + canvas.data.r[i],
    						   canvas.data.x[i] + canvas.data.r[i],
    						   canvas.data.y[i] - canvas.data.r[i],
    						   fill=canvas.data.color[i])
    	
    def init():
    	canvas.data.groundHeight = 600
    	canvas.data.x = [400]
    	canvas.data.y = [300]
    	canvas.data.r = [100]
    	canvas.data.color = [""]
    	canvas.data.backupX = []
    	canvas.data.backupY = []
    	canvas.data.backupR = []
    	canvas.data.backupColor = []
    
    def run():
    	global canvas
    	root = Tk()
    	canvas = Canvas(root, width=800, height=600, bg="yellow")
    	canvas.pack()
    	root.canvas = canvas.canvas = canvas
    	class MyModel: pass
    	canvas.data = MyModel()
    	init()
    	root.bind("<Key>", key)
    	timerFired(time.time())
    	root.mainloop()
    
    run()
    Last edited by bvdet; Mar 18 '13, 01:55 PM. Reason: Please use code tags when posting code [code]....[/code]
  • dwblas
    Recognized Expert Contributor
    • May 2008
    • 626

    #2
    You use canvas.create_i mage(x, y, image=name, + other options) see here for the create_image options. The "image=" must be a BitmapImage or PhotoImage instance.

    Comment

    Working...