簡體   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