简化此二进制变量的更改

时间:2010-10-24 20:30:49

标签: python

当我编写代码时,我多次发现以下情况:

def Mwindow_stayontop(self, event):
    if CFG["AlwOnTop"] == 1:
        self.SetWindowStyle(wx.DEFAULT_FRAME_STYLE)
        CFG["AlwOnTop"] = 0
    else:
        self.SetWindowStyle(wx.DEFAULT_FRAME_STYLE | wx.STAY_ON_TOP)
        CFG["AlwOnTop"] = 1

有人能想到一种更简单的方法吗?我试图使用SIN和COS来交替0和1之间的值,但不能。

想法?

2 个答案:

答案 0 :(得分:2)

CFG["AlwOnTop"] = 1 - CFG["AlwOnTop"]

CFG["AlwOnTop"] = not CFG["AlwOnTop"]

完整的功能可以是:

def Mwindow_stayontop(self, event):
    CFG["AlwOnTop"] = 1 - CFG["AlwOnTop"]
    self.SetWindowStyle(wx.DEFAULT_FRAME_STYLE | CFG["AlwOnTop"]*wx.STAY_ON_TOP)

虽然有些人可能认为太压缩了。

答案 1 :(得分:1)

这是一个简短的版本:

def Mwindow_stayontop(self, event):
    CFG["AlwOnTop"] = not CFG["AlwOnTop"]
    self.setWindowStyle(wx.DEFAULT_FRAME_STYLE | 
                        (wx.STAY_ON_TOP if CFG["AlwOnTop"] else 0))

如果您想将AlwOnTop视为布尔属性,您可以使用0为False且1为True的事实。 not将交替各州。