Панель инструментов wxPython с отключенными инструментами не отображается должным образом - PullRequest
1 голос
/ 29 июня 2019

У меня есть приложение на основе wxPython, и у меня проблемы с одной из панелей инструментов. Первоначально он был написан для wxPython 2.8.10 / Python 2.6, но в настоящее время работает с wxPython 4.0.4 / Python 2.7.15.

Панель инструментов содержит как (16,16), так и (32,32) растровые изображения. Когда все включено, все растровые изображения отображаются нормально. Однако любое отключенное растровое изображение выглядит так, как будто оно пытается отобразиться в верхнем левом (16,15) углу своего пространства. Я попытался переключиться на вызов (16,16) растровых изображений, и я попытался установить bmpDisabled для различных значений и изменить SetToolBitmapSize на панели инструментов, но, похоже, ничто не исправляет поведение.

Пример рендеринга панели инструментов при включении

Example of the toolbar rendering when enabled

Пример панели инструментов с отключенной 1-й (16,16) и 3-й (32,32). 2-й (16,16) все еще включен.

Example of the toolbar with the 1st (16,16) and 3rd (32,32) disabled

Код довольно прост:

   self._tb = self.CreateToolBar()
   self._tb.SetToolBitmapSize((32,32))

   image =   getTransparentwxBitmap("icons/foo.bmp")
   item =   self._tb.AddCheckTool(self.TB_FOO_ID, "", image, wx.NullBitmap, "Foo Panel", "Show/Hide the foo panel")
    self._tb.Bind(wx.EVT_TOOL,self.onToolClick,item)
    self._tb.EnableTool(self.TB_FOO_ID,False)

   image =   getTransparentwxBitmap("icons/bar.bmp")
   item =   self._tb.AddCheckTool(self.TB_BAR_ID, "", image, wx.NullBitmap, "Bar Panel", "Show/Hide the bar panel")
   self._tb.Bind(wx.EVT_TOOL,self.onToolClick,item)
   self._tb.EnableTool(self.TB_BAR_ID,False)

   imgPath = "images/baz.png"
   image = wx.Bitmap(imgPath)
   item = self._tb.AddTool(self.TB_BAZ_ID, "", image, shortHelp="BAZ Tool")
   self._tb.EnableTool(self.TB_BAZ_ID, False)
   .
   .
   .
   other tools
   .
   .
   .

   self._tb.Realize()

Есть мысли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...