如何定义标识窗口背景颜色的变量(python、tkinter)

如何定义标识窗口背景颜色的变量(python、tkinter),python,tkinter,Python,Tkinter,我之前问过一个与此相关的问题,在用户评论的帮助下,我现在可以在我的问题中获得更具体的信息: 基本上,我正在尝试创建一个“游戏秀蜂鸣器”类型的系统,该系统只需根据谁先“蜂鸣器”来更改窗口的背景色(按向右或向左箭头)。因此,如果按下左键,背景将变为绿色,如果按下右键,背景将变为粉红色。然而,由于对python和编程非常陌生,我正在努力弄清楚如何告诉程序忽略第二个“蜂鸣器”。换句话说,如果先按下左箭头,我希望它忽略右箭头,直到我“重置它”。当我按下回车键再次将背景变黑时,我现在有了这个功能 现在,我正

我之前问过一个与此相关的问题,在用户评论的帮助下,我现在可以在我的问题中获得更具体的信息:

基本上,我正在尝试创建一个“游戏秀蜂鸣器”类型的系统,该系统只需根据谁先“蜂鸣器”来更改窗口的背景色(按向右或向左箭头)。因此,如果按下左键,背景将变为绿色,如果按下右键,背景将变为粉红色。然而,由于对python和编程非常陌生,我正在努力弄清楚如何告诉程序忽略第二个“蜂鸣器”。换句话说,如果先按下左箭头,我希望它忽略右箭头,直到我“重置它”。当我按下回车键再次将背景变黑时,我现在有了这个功能

现在,我正在尝试设置一些代码,上面写着“如果背景是这种颜色,请继续更改它。如果背景是另一种颜色,请忽略按键”。我遇到的问题是知道如何告诉python检查窗口背景的颜色。有什么想法吗??非常感谢你的帮助

这是我目前的代码:

from Tkinter import *

class FullScreenApp:
    def __init__(self, master):
        #create full screen window
        self.master=master
        pad=3
        self._geom='200x200+0+0'
        master.geometry("{0}x{1}+0+0".format(
            master.winfo_screenwidth()-pad, master.winfo_screenheight()-pad))
        master.bind('<Escape>',self.toggle_geom)
        master.bind('<Left>', self.LeftArrowKey)
        master.bind('<Right>', self.RightArrowKey)
        master.bind('<Enter>', self.EnterKey)
    def toggle_geom(self,event):
        #toggle geometry of window when Escape is pressed
        geom=self.master.winfo_geometry()
        print(geom,self._geom)
        self.master.geometry(self._geom)
        self._geom=geom
    # "Buzzer keys" and "Reset" back to black
    def LeftArrowKey(self,event):
        if bgcolor()==bgcolor("black"):
            self.master.configure(background="green")
    def RightArrowKey(self, event):
        self.master.configure(background="deep pink")
    def EnterKey(self, event):
        self.master.configure(background="black")
    def bgcolor(self):


root=Tk()
root.configure(background="black")
root.title("Who buzzed in first?")
app=FullScreenApp(root)
root.mainloop()
从Tkinter导入*
类FullScreenApp:
定义初始(自我,主):
#创建全屏窗口
self.master=master
pad=3
自我评价_geom='200x200+0+0'
几何体(“{0}x{1}+0+0”。格式(
master.winfo_屏幕宽度()-pad,master.winfo_屏幕高度()-pad))
主绑定(“”,自切换)
master.bind(“”,self.LeftArrowKey)
master.bind(“”,self.RightArrowKey)
master.bind(“”,self.EnterKey)
def切换_geom(自身、事件):
#按下Escape时切换窗口的几何图形
geom=self.master.winfo_geometry()
打印(几何图形、自/几何图形)
自学几何(自学几何)
自。_geom=geom
#“蜂鸣器键”和“重置”返回黑色
def LeftArrowKey(自身,事件):
如果bgcolor()==bgcolor(“黑色”):
self.master.configure(后台=“绿色”)
def RightArrowKey(自身,事件):
self.master.configure(后台=“深粉色”)
def EnterKey(自我,事件):
self.master.configure(后台=“黑色”)
def bgcolor(自):
root=Tk()
root.configure(background=“black”)
root.title(“谁先进来?”)
app=FullScreenApp(根目录)
root.mainloop()

您需要使用一个标志,并在处理击键时检查该标志

您可以使用专用变量,也可以使用默认背景作为fla,看起来您已经在
LeftArrowKey
中执行了该操作。只需对两个键执行相同的操作:如果颜色当前为黑色,则将其设置为玩家的颜色。如果它不是黑色的,那么事件就太晚了,您什么也不做(或添加分数,或显示消息,…)

您可以使用
cget
方法获取当前颜色

def LeftArrowKey(self,event):
    if self.master.cget("background") == "black"):
        self.master.configure(background="green")
    else
        print("You are too slow!")
要使用专用标志,首先要确保在游戏开始时对其进行初始化:

self.winner = None
然后,您可以在函数中检查它:

def LeftArrowKey(self,event):
    if self.winner is None:
        self.master.configure(background="green")
        self.winner = "green"
    else
        print("You are too slow!")

重置时,只需将Colorchange设置回True即可

使用变量保存先按的信息。或者变量
已经按下==False
bgcolor()
bgcolor(“black”)
都是OP编写的函数。我想他是在问如何获得背景色。@BryanOakley哦,我想他声明了这些函数,但没有在这里添加它们。
Colorchange = True

def LeftArrowKey(self,event):
    if bgcolor()==bgcolor("black") and Colorchange = True:
        self.master.configure(background="green")
        Colorchange = False