2011-01-16 27 views
4

wxPython工具欄的外觀與當前操作系統的外觀不符 - 它具有類似於Windows Vista/7菜單I.E.的漸變。銀色漸變。如何更改wxPython工具欄的外觀?

有什麼方法可以改變它,使它與操作系統的外觀融合?

注意:創建工具欄時可以設置一個樣式標誌,其中一個標誌是wx.TB_FLAT,但這似乎對工具欄的顯示方式沒有影響。

我運行在Windows 7上

編輯我的wxPython程序:下面是我所看到的屏幕截圖。

alt text

編輯:看來在工具欄繪製按照當前的主題,更改爲Windows經典主題呈現其窗口背景相匹配的扁平工具欄。

下面的代碼顯示了我到目前爲止所嘗試的內容。我創建了一個名爲OnPaint的方法,該方法綁定到工具欄上的paint事件。這不起作用,工具欄如上圖所示。

我知道OnPaint中的代碼在呈現矩形時運行,如果我將此方法綁定到Windows畫圖事件而不是工具欄。

import wx 

ID_STAT = 1 
ID_TOOL = 2 

class CheckMenuItem(wx.Frame): 
    def __init__(self, parent, id, title): 
     wx.Frame.__init__(self, parent, id, title, size=(350, 250)) 

     menubar = wx.MenuBar() 
     file = wx.Menu() 
     view = wx.Menu() 
     self.shst = view.Append(ID_STAT, 'Show statubar', 'Show Statusbar', kind=wx.ITEM_CHECK) 
     self.shtl = view.Append(ID_TOOL, 'Show toolbar', 'Show Toolbar', kind=wx.ITEM_CHECK) 
     view.Check(ID_STAT, True) 
     view.Check(ID_TOOL, True) 

     self.Bind(wx.EVT_MENU, self.ToggleStatusBar, id=ID_STAT) 
     self.Bind(wx.EVT_MENU, self.ToggleToolBar, id=ID_TOOL) 

     menubar.Append(file, '&File') 
     menubar.Append(view, '&View') 
     self.SetMenuBar(menubar) 

     self.toolbar = self.CreateToolBar() 
     self.toolbar.Realize() 

     self.statusbar = self.CreateStatusBar() 

     self.Bind(wx.EVT_PAINT, self.OnPaint, self.toolbar) 

     self.Centre() 
     self.Show(True) 

    def OnPaint(self, e): 
     dc = wx.PaintDC(self) 
     dc.SetBrush(wx.Brush('#c56c00')) 
     dc.DrawRectangle(10, 15, 90, 60) 

    def ToggleStatusBar(self, event): 
     if self.shst.IsChecked(): 
      self.statusbar.Show() 
     else: 
      self.statusbar.Hide() 

    def ToggleToolBar(self, event): 
     if self.shtl.IsChecked(): 
      self.toolbar.Show() 
     else: 
      self.toolbar.Hide() 

app = wx.App() 
CheckMenuItem(None, -1, 'Toolbar Test') 
app.MainLoop() 

回答

3

看來我的問題的解決方案其實很簡單。而不是嘗試應用一些自定義繪畫邏輯,所有需要的都是調用工具欄的方法SetBackgroundColour()方法。

通過使用wx.SystemSettings類的顏色,可以保持系統的外觀和感覺。

self.toolbar.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_MENUBAR)) 

enter image description here

0

wxPython演示是否展現出相同的行爲?我不記得它在我的Windows 7機器上看起來不正確。也許清單文件沒有安裝。

+0

呀,從wxPython的演示工具欄樣品看起來完全一樣,在我的截圖一樣。另外,我已經重新安裝了wxPython至少3次。 –