2016-09-01 1 views
1

Ich habe ein Python-Skript für die GUI mit wxpython. In Windows funktioniert es einwandfrei, aber wenn ich das Skript in OS X ausführe, wird die Symbolleiste angezeigt (ich habe wxpython von seiner offiziellen Website installiert und die Kakaoversion verwendet, und ich verwende OS X 10.10 und Python 2.7). Im Folgenden ist der Teil des Codes über die Symbolleiste:wxpython Symbolleiste nicht in OS x

self.toolBar = wx.ToolBar(self, -1, style=wx.TB_HORIZONTAL|wx.TB_FLAT|wx.TB_DOCKABLE) 
self.myChoice = ComboBoxWithHelp(self.toolBar, wx.NewId(), size=(200, -1), value=..., choices=..., style=wx.CB_DROPDOWN,) 
self.toolBar.AddControl(self.myChoice) 

iconname = 'icons/new.png' 
self.toolBar.AddSimpleTool(1, wx.Image(iconname, wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', 'New') 

... 
self.toolBar.Realize() 
self.SetToolBar(self.toolBar) 

Nichts wird unterhalb der Menüleiste angezeigt, jedoch wird der Raum dort gelassen. Habe ich das wxpython falsch installiert oder die Funktion falsch benutzt?

Der obige Code funktioniert übrigens auch für Ubuntu.

Antwort

0

Was ist self in diesem Code? Symbolleisten sind ein wenig anders auf OSX, und und kann ein bisschen schwierig sein, so kann es einige Probleme geben, wenn self ist kein wx.Frame oder eine Klasse von wx.Frame abgeleitet. Dies liegt daran, dass die nativen Symbolleisten tatsächlich Teil des Frames und nicht ein unabhängiges Widget sind. Es sollte zu einer nicht nativen Symbolleiste wechseln, wenn das übergeordnete Element nicht der Rahmen ist, aber dann müssen Sie die Größe und das Layout selbst verwalten.

Wenn self ist bereits der Rahmen dann sollten Sie nicht versuchen, die Stil-Flags spezifiziert und lassen Sie es nur den Standardstil verwenden, oder Sie können versuchen, die Symbolleiste wie dies stattdessen zu schaffen und lassen Sie den Rahmen es erstellen:

self.toolBar = self.CreateToolBar()