2010-10-24 67 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將交替狀態。