2017-03-05 86 views
0

我有以下问题:如何添加一个按钮到wx.MenuBar()?

wx.Frame()在全屏模式下丢失系统菜单和关闭和最小化按钮。至少在Windows上它确实如此。

这通常是可取的,但不幸的是,我的应用程序的用户将会非常愚蠢,并且期望他们使用菜单来执行这两个操作将会太多。 我必须保持全屏,因为我需要很多空间和每个像素的控制。因此,我将不得不手动添加这两个按钮。我打算使用位图按钮,但我不确定如何解决问题。 由于没有标题,菜单栏位于框架的顶部。因此,我是否继承了wx.MenuBar()并在那里做了一些愚蠢的事情,或者我是否强制将它放在按钮上?操作系统甚至会让我对菜单栏发脾气?

我希望有人以前做过类似的事情,这样我就不必在雾中徘徊。简短的例子,欢迎。如果他们是跨平台友好的,那么他们是非常受欢迎的。

+0

菜单栏专门用于菜单,我认为你正在寻找'wx.ToolBar'。请参阅'wx.Frame.CreateToolBar()'https://wxpython.org/Phoenix/docs/html/wx.Frame.html#wx.Frame.CreateToolBar –

+0

我不知何故知道这一点。 :D 1.我没有水平工具栏和2的地方。哦,请,那个表情告诉我。我需要它看起来好像窗口在右上角有标准控件。 – Dalen

+0

工具栏可能是垂直的!但是,在Linux上,系统菜单和关闭和最小化按钮不会在全屏模式下消失,所以我无法复制您的环境,因为我拒绝在机器上放置“窗口”。 –

回答

0
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() 
+0

是的,但你没有菜单栏。只有一个工具栏。现在,如果你有一个,那么事情开始变得讨厌。例如,我刚刚意识到菜单栏不被视为框架内。坐标系不包含它,所以没有希望只是推动它。无论其方向如何,工具栏都位于菜单栏级别下方。 – Dalen

+0

增加了一个菜单栏,至少在Linux下它看起来很好。因此,无论是Windows正在做一些完全不同的事情,我不了解您的问题,或者您没有充分解释您的问题。不管你对空间的限制如何,控制器会在某个地方吃掉空间。 –

相关问题