wxPythonのツールバーのルックアンドフィールが現在のオペレーティングシステムのルックアンドフィールと一致しません.Windows Vista/7のメニューバーI.Eに似たグラデーションがあります。銀の勾配。wxPythonツールバーのルックアンドフィールを変更するにはどうすればよいですか?
これを変更して、オペレーティングシステムのルックアンドフィールとブレンドする方法はありますか?
注:ツールバーの作成時に設定できるスタイルフラグがあり、そのフラグの1つがwx.TB_FLATですが、これはツールバーの表示方法には影響しないようです。
私は、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()
うん、wxPythonのデモからツールバーのサンプルは、それが私のスクリーンショットにまったく同じように見えます。また、wxPythonを少なくとも3回再インストールしました。 –