Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检测鼠标单击是否选择了下面显示的颜色_Python_Tkinter - Fatal编程技术网

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

Python 如何检测鼠标单击是否选择了下面显示的颜色,python,tkinter,Python,Tkinter,我想知道用于检测用户是否在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, co

我想知道用于检测用户是否在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() 
从tkinter导入*
从随机导入*
fenetre=Tk()
fenetre.头衔(“Jeu Chlepko Peter”)
fenetre.几何学('500x280+500+280')
区域=画布(fenetre,宽度=500,高度=100)
zone.grid(行=3,行span=3,列=0,列span=3)
区域。创建矩形(0,0500200,填充为灰色)
颜色=[‘红色’、‘绿色’、‘蓝色’、‘黄色’、‘白色’、‘紫色’、‘粉色’、‘黑色’、‘青色’、‘橙色’]
洗牌(库勒)
def onClick(事件):
item=event.widget.find_最近(event.x,event.y)
color=event.widget.itemcget(项,'fill')
印刷品(彩色)
def jouer():
分区总数=0
区域。创建矩形(0,0500200,填充为灰色)
zone.alea=randint(0,4)
创建分区(0100,0,fill=couleurs[zone.alea])
分区。创建椭圆(200100100,0,填充为蓝色)
区域。创建椭圆(300100200,0,填充为白色)
区域。创建椭圆(400100300,0,填充为黑色)
分区。创建椭圆(500100400,0,填充为橙色)
bouton_jouer=按钮(fenetre,text=“Lancer le-jeu”,command=jouer)
bouton_jouer.网格(行=1,列=1)
描述=标签(fenetre,文本=“”)
description.grid(行=2,列=1)
区域绑定(“”,onClick)
bouton_quitter=按钮(fenetre,text='quitter',command=fenetre.destroy)
bouton_quitter.grid(行=7,列=1)
description=标签(fenetre,text='Cliquez sur la couleur demandée')
description.grid(行=0,列=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()
从tkinter导入*
从随机导入randint,洗牌
fenetre=Tk()
fenetre.头衔(“Jeu Chlepko Peter”)
费内特几何体('550x280+500+280')
区域=画布(fenetre,宽度=550,高度=100)
zone.grid(行=3,行span=3,列=0,列span=3)
区域。创建矩形(0,0550200,填充为灰色)
颜色=[‘红色’、‘绿色’、‘蓝色’、‘黄色’、‘白色’、‘紫色’、‘粉色’、‘黑色’、‘青色’、‘橙色’]
循环上的def单击(事件):
#获取正在单击的项目
item=event.widget.find_with tag(当前)[0]
#得到它的颜色
color=event.widget.itemcget(项“填充”)
印刷品(彩色)
如果颜色==couleurs[zone.alea]:
#你想干什么就干什么
打印('选择正确的颜色')
其他:
打印('oops!重试!')
#仅将鼠标单击事件绑定到带有标记“圆圈”的项目
区域。标记绑定('圆圈','',点击圆圈)
def jouer():
洗牌(couleurs)#重新排列颜色
zone.alea=randint(0,3)#获取一个介于0和3之间的随机数
#删除现有的圆圈
删除区域('random','circle')
#使用目标颜色创建圆
创建分区(0100,0,fill=couleurs[zone.alea],tags='random')
#使用带有标记“circle”的颜色列表中的前四种颜色创建圆形
创建椭圆区域(250100150,0,fill=couleurs[0],tag='circle')
创建椭圆区域(350100250,0,fill=couleurs[1],tag='circle')
创建椭圆区域(450100350,0,fill=couleurs[2],tag='circle')
创建椭圆区域(550100450,0,fill=couleurs[3],tag='circle')
bouton_jouer=按钮(fenetre,text=“Lancer le-jeu”,command=jouer)
bouton_jouer.网格(行=1,列=1)
描述=标签(fenetre,文本=“”)
description.grid(行=2,列=1)
bouton_quitter=按钮(fenetre,text='quitter',command=fenetre.destroy)
bouton_quitter.grid(行=7,列=1)
description=标签(fenetre,text='Cliquez sur la couleur demandée')
description.grid(行=0,列=1)
fenetre.mainloop()