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