1

Pythonでバインドとイベントがどのように機能するかを理解しようとしています。たとえば、私は 3 つのタイルを作成し、タイルの 1 つの色を変更できるようにしたいのですが、どこが間違っているのか理解または把握できません。私は得続けます:

AttributeError: 'int' object has no attribute 'bind'.

以下はコードです。事前に感謝します。

import tkinter

def main():

    root = tkinter.Tk()

    title = tkinter.Label(root, text="Test Window")
    title.pack()


    canvas= tkinter.Canvas(root, background='green', width = 300, height = 300)

    tile1=canvas.create_rectangle(0, 0, 100, 100, fill = 'magenta')
    tile2=canvas.create_rectangle(100,0, 200,100, fill = 'blue')
    tile3=canvas.create_rectangle(200,0, 300,100, fill = 'blue')

    canvas.pack()

    def change_square(event):
        event.configure(background = 'blue')

    tile1.bind("<Button-1>", change_square(tile1))

    root.mainloop()

if __name__ == '__main__':
    main()
4

1 に答える 1

2

itemconfigure色が変わります:

def main():
    root = tkinter.Tk()

    title = tkinter.Label(root, text="Test Window")
    title.pack()

    canvas = tkinter.Canvas(root, background='green', width=300, height=300)

    s1 = canvas.create_rectangle(0, 0, 100, 100, fill='magenta')

    s2 = canvas.create_rectangle(100, 0, 200, 100, fill='blue')
    s3 = canvas.create_rectangle(200, 0, 300, 100, fill='blue')

    canvas.pack()

    def change_square(event):
        canvas.itemconfigure(s1, fill="blue")

    canvas.bind("<Button-1>", change_square)
    root.mainloop()

中央を黒に変更したい場合は、次を使用します。

canvas.itemconfigure(s2, fill="black")`

等々。

クリックした色に基づいて色を変更する場合は、次のようにします。

 def change_square(event):
        x = canvas.canvasx(event.x)
        y = canvas.canvasy(event.y)
        sq = canvas.find_closest(x,y)[0]
        canvas.itemconfigure(sq, fill="black")


    canvas.bind("<Button-1>", change_square)
    root.mainloop()
于 2015-03-20T00:19:37.817 に答える