[英]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.