之前我问了一个与之相关的问题,在用户评论的帮助下,我现在可以在我的问题中更具体一点:
基本上我正在尝试创建一个游戏节目蜂鸣器"类型系统,只需更改我的窗口的背景颜色取决于谁"嗡嗡声"在第一个(按向右或向左箭头)。因此,如果按下左侧,则背景变为绿色,如果按下右侧,则背景变为粉红色。然而,对于python和编程一般都是新手,我正在努力弄清楚如何告诉程序忽略第二个"蜂鸣器"。换句话说,如果先按下左箭头,我希望它忽略右箭头,直到我重置它为止#34;。我现在有这个,因为我按下回车键再次将背景变黑。
现在我正试图设置一些代码说明"如果背景是这种颜色继续并改变它。如果背景颜色不同,请忽略按键"。我遇到的问题是知道如何告诉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()
答案 0 :(得分:0)
您需要使用标志,并在处理击键时检查该标志。
您可以使用专用变量,或者您可以使用默认背景作为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!")
答案 1 :(得分:0)
Colorchange = True
def LeftArrowKey(self,event):
if bgcolor()==bgcolor("black") and Colorchange = True:
self.master.configure(background="green")
Colorchange = False
重置时只将Colorchange设置回True