如何添加一个按钮到wx.MenuBar()?
我有以下问题:如何添加一个按钮到wx.MenuBar()?
wx.Frame()在全屏模式下丢失系统菜单和关闭和最小化按钮。至少在Windows上它确实如此。
这通常是可取的,但不幸的是,我的应用程序的用户将会非常愚蠢,并且期望他们使用菜单来执行这两个操作将会太多。 我必须保持全屏,因为我需要很多空间和每个像素的控制。因此,我将不得不手动添加这两个按钮。我打算使用位图按钮,但我不确定如何解决问题。 由于没有标题,菜单栏位于框架的顶部。因此,我是否继承了wx.MenuBar()并在那里做了一些愚蠢的事情,或者我是否强制将它放在按钮上?操作系统甚至会让我对菜单栏发脾气?
我希望有人以前做过类似的事情,这样我就不必在雾中徘徊。简短的例子,欢迎。如果他们是跨平台友好的,那么他们是非常受欢迎的。
import wx
class NoCaptionFrame(wx.Frame):
def __init__(self):
no_caption = wx.RESIZE_BORDER
wx.Frame.__init__(self, None, title="No Caption", style=no_caption)
toolbar = self.CreateToolBar(style=wx.TB_VERTICAL)
quittool1 = toolbar.AddLabelTool(wx.ID_ANY, 'Quit', wx.Bitmap('exit.png'))
quittool2 = toolbar.AddLabelTool(wx.ID_ANY, 'Quit', wx.Bitmap('exit.png'))
quittool3 = toolbar.AddLabelTool(wx.ID_ANY, 'Quit', wx.Bitmap('exit.png'))
toolbar.Realize()
menubar=wx.MenuBar()
first=wx.Menu()
second=wx.Menu()
first.Append(1,"New Window","This is a new window")
first.Append(2,"Open...","Open A New Window")
menubar.Append(first,"File")
menubar.Append(second,"Edit")
self.SetMenuBar(menubar)
self.Bind(wx.EVT_TOOL, self.OnQuit, quittool1)
self.Show()
def OnQuit(self, e):
self.Close()
if __name__ == "__main__":
app = wx.App()
frame = NoCaptionFrame()
app.MainLoop()
是的,但你没有菜单栏。只有一个工具栏。现在,如果你有一个,那么事情开始变得讨厌。例如,我刚刚意识到菜单栏不被视为框架内。坐标系不包含它,所以没有希望只是推动它。无论其方向如何,工具栏都位于菜单栏级别下方。 – Dalen
增加了一个菜单栏,至少在Linux下它看起来很好。因此,无论是Windows正在做一些完全不同的事情,我不了解您的问题,或者您没有充分解释您的问题。不管你对空间的限制如何,控制器会在某个地方吃掉空间。 –
菜单栏专门用于菜单,我认为你正在寻找'wx.ToolBar'。请参阅'wx.Frame.CreateToolBar()'https://wxpython.org/Phoenix/docs/html/wx.Frame.html#wx.Frame.CreateToolBar –
我不知何故知道这一点。 :D 1.我没有水平工具栏和2的地方。哦,请,那个表情告诉我。我需要它看起来好像窗口在右上角有标准控件。 – Dalen
工具栏可能是垂直的!但是,在Linux上,系统菜单和关闭和最小化按钮不会在全屏模式下消失,所以我无法复制您的环境,因为我拒绝在机器上放置“窗口”。 –