wxPython仅创建图像工具栏窗口
我正在尝试创建一个与我创建的工具栏大小相同的wxPython框架 我已经成功地创建了wx.Frame和空工具栏,但是窗口太大了,我如何使它正好适合工具栏 我试过的代码:wxPython仅创建图像工具栏窗口,python,wxpython,Python,Wxpython,我正在尝试创建一个与我创建的工具栏大小相同的wxPython框架 我已经成功地创建了wx.Frame和空工具栏,但是窗口太大了,我如何使它正好适合工具栏 我试过的代码: import wx class Example(wx.Frame): def __init__(self, *args, **kwargs): super(Example, self).__init__(*args, **kwargs) vbox = wx.BoxSizer(wx.VE
import wx
class Example(wx.Frame):
def __init__(self, *args, **kwargs):
super(Example, self).__init__(*args, **kwargs)
vbox = wx.BoxSizer(wx.VERTICAL)
toolbar1 = wx.ToolBar(self)
toolbar1.SetToolBitmapSize(wx.Size(64, 64))
toolbar1.Realize()
vbox.Add(toolbar1, 0, wx.EXPAND)
self.SetSizer(vbox)
self.SetTitle('Toolbars')
self.Centre()
vbox.Fit(self)
app = wx.App()
ex = Example(None)
ex.Show()
app.MainLoop()
无法将框架的大小设置为工具栏的大小。 差不多
self.size = toolbar1.size
我假设linux/mac上的工具栏大小为(0,0)的原因是b/c,没有附加任何工具。要解决此问题,您可以为工具栏设置最小大小,然后通过向工具栏大小添加边框标题和边框来计算边框大小
import wx
class Example(wx.Frame):
def __init__(self, *args, **kwargs):
super(Example, self).__init__(*args, **kwargs)
vbox = wx.BoxSizer(wx.VERTICAL)
toolbar1 = wx.ToolBar(self)
toolbar1.SetBackgroundColour(wx.RED)
toolbar1.SetToolBitmapSize(wx.Size(64, 64))
# prevent the sizer from setting the size to (0, 0) when there are no tools attached
toolbar1.SetMinSize((64, 64))
toolbar1.Realize()
vbox.Add(toolbar1, 0, wx.EXPAND)
self.SetSizer(vbox)
self.SetTitle('Toolbars')
self.Centre()
vbox.Fit(self)
self.Layout()
# calculate the frame caption height
caption_height = wx.SystemSettings.GetMetric(wx.SYS_CAPTION_Y, self)
# *2 for the left and right border
border_width = wx.SystemSettings.GetMetric(wx.SYS_BORDER_X, self) * 2
# get the size of the toolbar
sx, sy = toolbar1.GetSize()
# set the frame size by adding the toolbar size to the border/caption size
self.SetSize((sx + border_width, sy + caption_height))
app = wx.App()
ex = Example(None)
ex.Show()
app.MainLoop()
这在Windows上有效,但在Linux和Mac上不可靠-在Mac toolbar1上。在Linux/Mac上大小返回(0,0)标题高度为-1,对于某些奇数,边框高度为=-1reason@PaulMorriss当您向其添加工具时,它是否会更改?