繁体   English   中英

我如何定义一个变量来标识窗口的背景色(python,tkinter)

[英]How do I define a variable that identifies the background color of the window (python, tkinter)

之前,我在用户评论的帮助下提出了与此相关的问题,现在我可以更具体地回答我的问题:

基本上,我试图创建一个“游戏节目蜂鸣器”类型的系统,该系统只是根据谁先发出“蜂鸣声”(通过按向右或向左箭头)来更改窗口的背景颜色。 因此,如果按向左,则背景变为绿色,如果按向右,则背景变为粉红色。 但是,由于是python和程序设计的新手,我正在努力弄清楚如何让程序忽略第二个“蜂鸣器”。 换句话说,如果首先按下左箭头,则我希望它忽略右箭头,直到“重置”为止。 目前,按Enter键再次将背景变黑时,我已经有了。

现在,我正在尝试设置一些代码,说明“如果背景是这种颜色,请继续进行更改。如果背景是其他颜色,请忽略按键”。 我遇到的问题是知道如何告诉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()

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

您可以使用专用变量,也可以使用默认背景作为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

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

重置时只需将Colorchange设置为True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM