2016-04-16 10 views
-1

Ich habe ein Problem mit meiner Funktion "draw_pieces()", denn wenn ich meinen Code ausführe, habe ich folgende Fehler: (Ohne "draw_pieces()" funktioniert mein Code)Was bedeutet dieser Attributfehler? 'int' Objekt hat kein Attribut 'Elemente'

_cnfmerge: fallback due to: 'int' object is not iterable 
Traceback (most recent call last): 
    File "C:\Users\Thierry\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 102, in _cnfmerge 
    cnf.update(c) 
TypeError: 'int' object is not iterable 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "C:\Users\Thierry\Desktop\Chess\Chessboard.py", line 31, in <module> 
    draw_pieces() 
    File "C:\Users\Thierry\Desktop\Chess\Chessboard.py", line 28, in draw_pieces 
    canvas.create_image=Canvas(30,30, image=photo, anchor=CENTER, state=NORMAL) 
    File "C:\Users\Thierry\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 2244, in __init__ 
    Widget.__init__(self, master, 'canvas', cnf, kw) 
    File "C:\Users\Thierry\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 2129, in __init__ 
    cnf = _cnfmerge((cnf, kw)) 
    File "C:\Users\Thierry\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 105, in _cnfmerge 
    for k, v in c.items(): 
AttributeError: 'int' object has no attribute 'items' 

Hier ist mein Code:

from tkinter import * 
root=Tk() 
root.geometry("512x512") 

rows = 8 
columns = 8 
color1 = "#b35821" #Flery Orange 
color2 = "#efcb9d" #New Tan 
dim_square = 64 

canvas=Canvas(root, width=512, height=512) 
canvas.pack() 

photo=PhotoImage(file="blackk.gif") 

def draw_chessboard(): 
    color = color2 
    for r in range(rows): 
     color = color1 if color == color2 else color2 
     for c in range(columns): 
      x1 = (c * dim_square) 
      y1 = ((7-r) * dim_square) 
      x2 = x1 + dim_square 
      y2 = y1 + dim_square 
      canvas.create_rectangle(x1, y1, x2, y2, fill=color, tags="area") 
      color = color1 if color == color2 else color2 

def draw_pieces(): 
    canvas.create_image=Canvas(30,30, image=photo, anchor=CENTER, state=NORMAL) 

draw_chessboard() 
draw_pieces() 

root.mainloop() 

können Sie mir helfen, dieses Problem beheben? Vielen Dank im Voraus für Ihre Hilfe :).

+0

Bitte den Code anzeigen, wo der Fehler auftritt! Sie haben wahrscheinlich ein "int", wo Sie denken, dass Sie ein Wörterbuch haben. Bitte zeigen Sie den kompletten Traceback, nicht bearbeitete Highlights. – cdarke

+1

Sie sollten das gesamte Traceback (eingerückt durch 4 Leerzeichen) in Ihre Frage kopieren und einfügen. Unabhängig davon ist 'create_image' der Name eines' Canvas'-Widgets _method_, daher ist unklar, was Sie erreichen möchten, indem Sie es durch ein anderes ('Canvas') -Objekt ersetzen. – martineau

+0

Ich möchte nur Stücke auf mein Brett legen. – titi157

Antwort

1

Ich habe versucht, diese Änderung, und das Programm lief ohne Fehler:

original

canvas.create_image=Canvas(30,30, image=photo, anchor=CENTER, state=NORMAL) 

Änderung:

canvas.create_image(30,30, image=photo, anchor=CENTER, state=NORMAL) 

ich diese Ressource auch, dass ich gerne zu gehen, wenn ich tkinter benutze. Ich hoffe das hilft.

http://infohost.nmt.edu/tcc/help/pubs/tkinter/tkinter.pdf

+0

Danke, tkinter ist nicht sehr intuitiv für mich ^^ – titi157

+0

Danke, Rogalski, für die Bearbeitung, um die Lesbarkeit zu verbessern! – coralvanda

Verwandte Themen