2011-06-19 99 views
3

我已經使用wxpython工具包在python中製作了一個使用GUI的小應用程序。它由一個框架作爲頂層窗口和100個StaticText子窗口小部件組成。我已將其大小事件(wx.EVT_SIZE)綁定到OnResize函數,該函數根據StaticText小部件的大小更改其字體。 (這有助於在運行時相應地調整框架窗口的大小時增加或減小窗口小部件的字體大小。)調整wxpython小部件的大小調整事件的函數在調整大小時多次調用

現在問題在於每次調整框架大小時,OnResize函數都會調用4 times。這大大減緩了我的應用程序的啓動(也調整了它的大小)。我想要的是OnResize函數只能調用一次。

這有可能以任何方式嗎?

回答

4

考慮一種替代方法。

保留先前處理大小的變量。然後,在您的大小處理程序中,如果自上次大小事件後小部件的大小實際發生了更改,則只能更改字體大小。

def OnResize(self, event): 
    w, h = size = self.GetSize() 
    if size != self.previous_size: 
     # update font size 
    self.previous_size = size 
+0

真是個好主意。謝謝! –

+0

我認爲第二行應該是 - > w,h = size = event.GetSize() –

+0

@Guanidene:要麼都行。 – FogleBird