2016-05-13 5 views
0

Ich mache ein Monopol Spiel ziehen, & ich versuche Bild auf Leinwand zu zeichnen, aber es wird nur dann, wenn nicht in Funktion arbeiten:kann nicht tkinter Bild in Funktion

def make_image(root, location, canvas): 
photo = PhotoImage(file = root) 
canvas.create_image(location["X"],location["Y"], image = photo, anchor = "nw") 

class something(): 
def start(self, controller): 
    self.controller = controller 
    #photo = PhotoImage(file = "googolopoly.png") 
    #self.canvas.create_image(0,0, image = photo, anchor = "nw") 
    make_image("googolopoly.png", {"X":0,"Y":0}, self.canvas) 
    make_text(self.canvas, "MONOPOLY!!!!", {"X":1050,"Y":20}) 
    make_button(self.main_tk, self.canvas, "roll dice", lambda: self.roll_dice(), {"X":1100, "Y":50}, 100) 
    for i in range(controller.player_number): 
     self.players.append(make_text(self.canvas, str(i+1), {"X":902+i*10, "Y":946})) 
    self.main_tk.mainloop() 

derzeit es gewann‘ t zeichne ein Bild, aber wenn ich die Kommentare herunterkommen wird es funktionieren (keine Funktion) es passiert auch nach Hauptschleife, wenn ich Spieler

ich brauche es wirklich als Funktion. was ist zu tun? Wenn Sie brauchen, kann ich etwas mehr Code setzen

+0

Sie sicher, dass Sie es wollen? es wäre einfacher, auf einem Label zu tun – Veltro

+0

Eigentlich weiß ich nicht, was ein Label ist. Was ich geschrieben habe, ist, was wir im Unterricht gelernt haben. Wenn Sie sagen, dass es eine einfachere Lösung gibt, fügen Sie bitte eine Antwort hinzu. (Aber ich verwende Leinwand für alles andere) –

+0

Kannst du bitte eine andere Frage stellen, wie man das mit Labels macht? Ein Label ist übrigens ein Textelement im Fenster – Veltro

Antwort

1

Sie vermisste diese Codezeile: myCanvas.image = photo.

Und selbst wenn es wäre einfacher, das Bild auf einem Etikett zu ziehen, mit diesem Code können Sie es auf einer Leinwand mit der Funktion make_image() tun können: auf Leinwand

from Tkinter import * 


def make_image(filename, location, canvas): 
    photo = PhotoImage(file=filename) 
    myCanvas.image = photo 
    myCanvas.create_image(0,0, image = photo, anchor = "nw") 



root = Tk() 

myCanvas = Canvas(root, width=100, height=100) 
myCanvas.grid() 


make_image("image.gif", (5,5,95,95), myCanvas) 

root.mainloop() 
+0

Aber Sie sagen, Sie möchten eine Variable namens Foto in der Klasse Mycanvas erstellen? Also wird es die Variable jedes Mal neu machen, wenn ich das Foto mache, oder? –

+0

so etwas wie @AlonKagan – Veltro

+0

funktioniert es @AlonKagan? – Veltro