2010-10-24 65 views
0

当我写我的代码,我发现下面的情况很多次的变化:简化这个二元变量

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

下面是一个简短的版本:

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为假,1为真,你的优势。 not将交替状态。