如何检测鼠标单击是否选择了下面显示的颜色



我想知道检测用户是否点击了tkinter中询问的颜色的命令,这是我的程序:

from tkinter import*
from random import*
fenetre=Tk()
fenetre.title('Jeu Chlepko Peter')
fenetre.geometry('500x280+500+280')
zone=Canvas(fenetre,width=500,height=100)
zone.grid(row=3, rowspan=3, column=0, columnspan=3)
zone.create_rectangle(0,0,500,200,fill='Grey')
couleurs=['Red','Green','Blue','Yellow','White','Purple','Pink','Black','Cyan','Orange']
shuffle(couleurs)

def jouer():
zone.total=0
zone.create_rectangle(0,0,500,200,fill='Grey')
zone.alea=randint(0,4)
zone.create_oval(0,100,100,0,fill=couleurs[zone.alea])
zone.create_oval(200,100,100,0,fill='Blue')
zone.create_oval(300,100,200,0,fill='White')
zone.create_oval(400,100,300,0,fill='Black')
zone.create_oval(500,100,400,0,fill='Orange')

bouton_jouer=Button(fenetre,text="Lancer le jeu",command=jouer)
bouton_jouer.grid(row=1,column=1)
description=Label(fenetre,text='')
description.grid(row=2,column=1)

bouton_quitter=Button(fenetre,text='Quitter', command=fenetre.destroy)
bouton_quitter.grid(row=7,column=1)
description=Label(fenetre,text='Cliquez sur la couleur demandée')
description.grid(row=0, column=1)
enter code here
fenetre.mainloop() 

如果您能回复我,我将非常高兴

我已经在你的代码中添加了一个onClick函数。该函数从 tkinter 接收小部件调用它以及一些信息,例如 x,y 坐标。 我使用它来查找画布中离用户单击位置最近的对象。 然后我使用 itemcget 告诉该对象是什么颜色,并将颜色打印到终端输出。然后,您可以将其用于您需要的任何东西

from tkinter import *
from random import *
fenetre=Tk()
fenetre.title('Jeu Chlepko Peter')
fenetre.geometry('500x280+500+280')
zone=Canvas(fenetre,width=500,height=100)
zone.grid(row=3, rowspan=3, column=0, columnspan=3)
zone.create_rectangle(0,0,500,200,fill='Grey')
couleurs=['Red','Green','Blue','Yellow','White','Purple','Pink','Black','Cyan','Orange']
shuffle(couleurs)

def onClick(event):
item = event.widget.find_closest(event.x,event.y)
color = event.widget.itemcget(item,'fill')
print(color)
def jouer():
zone.total=0
zone.create_rectangle(0,0,500,200,fill='Grey')
zone.alea=randint(0,4)
zone.create_oval(0,100,100,0,fill=couleurs[zone.alea])
zone.create_oval(200,100,100,0,fill='Blue')
zone.create_oval(300,100,200,0,fill='White')
zone.create_oval(400,100,300,0,fill='Black')
zone.create_oval(500,100,400,0,fill='Orange')

bouton_jouer=Button(fenetre,text="Lancer le jeu",command=jouer)
bouton_jouer.grid(row=1,column=1)
description=Label(fenetre,text='')
description.grid(row=2,column=1)
zone.bind('<Button-1>',onClick)
bouton_quitter=Button(fenetre,text='Quitter', command=fenetre.destroy)
bouton_quitter.grid(row=7,column=1)
description=Label(fenetre,text='Cliquez sur la couleur demandée')
description.grid(row=0, column=1)
fenetre.mainloop() 

据我了解,当用户单击Lancer le jeu按钮时,您想从每个游戏的couleurs列表中选择 4 种颜色。 然后,您要从 4 种选择的颜色中随机选择一种,并要求用户单击正确的颜色。

以下是您发布的代码的修改版本,以实现目标:

from tkinter import *
from random import randint, shuffle
fenetre=Tk()
fenetre.title('Jeu Chlepko Peter')
fenetre.geometry('550x280+500+280')
zone=Canvas(fenetre,width=550,height=100)
zone.grid(row=3, rowspan=3, column=0, columnspan=3)
zone.create_rectangle(0,0,550,200,fill='Grey')
couleurs=['Red','Green','Blue','Yellow','White','Purple','Pink','Black','Cyan','Orange']
def on_circle_click(event):
# get the item being clicked
item = event.widget.find_withtag(CURRENT)[0]
# get its color
color = event.widget.itemcget(item, 'fill')
print(color)
if color == couleurs[zone.alea]:
# do whatever you want
print('correct color selected')
else:
print('oops! try again!')
# bind mouse click event to items with tag 'circle' only
zone.tag_bind('circle', '<Button-1>', on_circle_click)
def jouer():
shuffle(couleurs) # rearrange the colors
zone.alea = randint(0, 3) # get a random number between 0 and 3
# remove existing circles
zone.delete('random', 'circle')
# create the circle with target color
zone.create_oval(0,100,100,0,fill=couleurs[zone.alea], tags='random')
# create circles with the first four colors in the color list with tag 'circle'
zone.create_oval(250,100,150,0,fill=couleurs[0], tag='circle')
zone.create_oval(350,100,250,0,fill=couleurs[1], tag='circle')
zone.create_oval(450,100,350,0,fill=couleurs[2], tag='circle')
zone.create_oval(550,100,450,0,fill=couleurs[3], tag='circle')
bouton_jouer=Button(fenetre,text="Lancer le jeu",command=jouer)
bouton_jouer.grid(row=1,column=1)
description=Label(fenetre,text='')
description.grid(row=2,column=1)
bouton_quitter=Button(fenetre,text='Quitter', command=fenetre.destroy)
bouton_quitter.grid(row=7,column=1)
description=Label(fenetre,text='Cliquez sur la couleur demandée')
description.grid(row=0, column=1)
fenetre.mainloop()

最新更新