【问题标题】:How would I make my movebal square change colors by clicking another square on my canvas?如何通过单击画布上的另一个方块来让我的 movebal 方块改变颜色?
【发布时间】:2014-11-10 04:54:19
【问题描述】:

所以我有一个红色方块,你可以用箭头键四处移动,我在画布的左上角有另外 3 个方块。它们是红色、绿色和蓝色。如果您在其中一个方格内单击,我希望它将可移动方格变为单击方格的颜色。我不确定如何去做,任何帮助都将不胜感激,这是我到目前为止的代码。

from tkinter import*



def onKeyDown(event):
    if(event.keysym == "Up"):
        canvas.move(rect, 0, -2)
    if(event.keysym == "Down"):
        canvas.move(rect, 0, 2)
    if(event.keysym == "Left"):
        canvas.move(rect, -2, 0)
    if(event.keysym == "Right"):
        canvas.move(rect, 2, 0)

def onMouseDown(event):
    canvas.itemconfigure(rect, fill="green");






master = Tk()
canvas = Canvas(master, width=600, height=600)
canvas.pack()
rect = canvas.create_rectangle(250,250,350,350, fill="red")
canvas.update()

rrect = canvas.create_rectangle(0,0,30,30, fill="red")
grect = canvas.create_rectangle(33,0,60,30, fill="green")
brect = canvas.create_rectangle(63,0,90,30, fill="blue")
master.bind("<Key>", onKeyDown)  
master.bind("<Button-1>", onMouseDown)

编辑* 我现在走在正确的轨道上,我刚刚发现 onMouseDown(event) 仍然对如何使其工作感到有些困惑,尽管通过单击每个方块来更改颜色。

【问题讨论】:

    标签: python animation canvas tkinter


    【解决方案1】:

    我自己想通了。我不得不使用 canvas.tag_bind。将鼠标按钮绑定到我的一个形状以更改颜色。这是我为可能需要此示例的任何人所做的。

    from tkinter import*
    
    
    
    def onKeyDown(event):
        if(event.keysym == "Up"):
            canvas.move(rect, 0, -2)
        if(event.keysym == "Down"):
            canvas.move(rect, 0, 2)
        if(event.keysym == "Left"):
            canvas.move(rect, -2, 0)
        if(event.keysym == "Right"):
            canvas.move(rect, 2, 0)
    
    
    def onClick1(event):
        canvas.itemconfigure(rect, fill="red");
    def onClick2(event):
        canvas.itemconfigure(rect, fill="green");
    def onClick3(event):
        canvas.itemconfigure(rect, fill="blue")
    
    
    
    
    master = Tk()
    canvas = Canvas(master, width=600, height=600)
    canvas.pack()
    rect = canvas.create_rectangle(250,250,350,350, fill="red")
    canvas.update()
    
    rrect = canvas.create_rectangle(0,0,30,30, fill="red")
    grect = canvas.create_rectangle(33,0,60,30, fill="green")
    brect = canvas.create_rectangle(63,0,90,30, fill="blue")
    
    master.bind("<Key>", onKeyDown)
    
    canvas.tag_bind(rrect,"<Button-1>", onClick1)
    canvas.tag_bind(grect,"<Button-1>", onClick2)
    canvas.tag_bind(brect,"<Button-1>", onClick3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2014-04-09
      • 1970-01-01
      • 2017-12-25
      • 2022-12-04
      相关资源
      最近更新 更多