wxPython ToolBar外观与当前操作系统的外观不匹配 - 它具有类似于Windows Vista/7菜单栏IE的渐变色渐变色.
有没有办法改变它,以便它与操作系统的外观和感觉融为一体?
注意:创建ToolBar时可以设置样式标志,其中一个标志是wx.TB_FLAT,但这似乎对ToolBar的渲染方式没有影响.
我在Windows 7上运行我的wxPython程序.
编辑:下面是我看到的屏幕截图.

编辑:似乎工具栏是根据当前主题绘制的,因为更改为Windows经典主题会呈现与窗口背景匹配的平面工具栏.
下面的代码显示了我到目前为止所尝试的内容.我创建了一个名为OnPaint的方法,它绑定到工具栏绘制事件.这没有任何效果,工具栏如上图所示绘制.
我知道,如果我将此方法绑定到Windows绘制事件而不是工具栏,则OnPaint中的代码将作为矩形呈现.
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()
Run Code Online (Sandbox Code Playgroud)
看来我的问题的解决方案实际上很简单。而不是尝试应用一些自定义绘制逻辑,所需的只是调用工具栏的SetBackgroundColour()方法。
可以使用wx.SystemSettings类中的颜色来维护系统外观。
self.toolbar.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_MENUBAR))
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
2523 次 |
| 最近记录: |