2016-09-10 2 views
1

Ich bin neu bei wxPython und ich finde einige Probleme beim Einstellen einer bestimmten Größe für Rahmen und Fenster (Widgets). Ich habe das Problem auf den einfachsten Fall isoliert, wo ich versuche, einen Frame von 250x250 Pixeln zu erstellen.Set wx.Frame Größe (wxPython - wxWidgets)

Ausführen des Codes ich ein Fenster einer tatsächlichen Größe von 295 Breite von 307 Höhe erhalten (unter Berücksichtigung der Windows's oberen Fensterleiste)

Ich verwende Python 2.7 in Windows 10.

Was vermisse ich?

#!/bin/env python 
import wx 

# App Class 
class MyAppTest7(wx.App): 

    def OnInit(self): 

     frame = AppFrame(title = u'Hello World', pos=(50, 60), size=(250, 250)) 
     frame.Show() 
     self.SetTopWindow(frame) 
     return True 

# AppFrame 
class AppFrame(wx.Frame): 
    def __init__(self, title, pos, size): 
     wx.Frame.__init__(self, parent=None, id=-1, title=title, pos=pos, size=size) 


if __name__ == '__main__': 
     app = MyAppTest7(False) 
     app.MainLoop() 

Ein addtional Test zur weiteren Show Ausgabe:

#!/bin/env python 
import wx 

class MyApp(wx.App): 
    def OnInit(self): 
     self.frame = MyFrame(None, title="The Main Frame") 
     self.SetTopWindow(self.frame) 
     self.frame.Show(True) 
     return True 

class MyFrame(wx.Frame): 
    def __init__(self, parent, id=wx.ID_ANY, title="", pos=wx.DefaultPosition, size=(400,100), style=wx.DEFAULT_FRAME_STYLE, name="MyFrame"): 
     super(MyFrame, self).__init__(parent, id, title, pos, size, style, name) 
     self.panel = wx.Panel(self) 

if __name__ == "__main__": 
    app = MyApp(False) 
    app.MainLoop() 

Und das Ergebnis:

Wie Sie angezeigten Fenster sehen kann (Frame) hat 482 Pixel (-siehe Paint Boden bar-) statt der erwarteten 400.

Window size measured in pixels

+0

Wie messen Sie die Abmessungen von Frame? –

+0

Ich mache einen Screenshot in Windows 10 mit Alt + PrintScreen-Taste. Dann messe ich nur die Breite in Paint. –

+0

Nehmen Sie Ihre Bildschirmgröße und machen Sie die Breite des Rahmens, dann verwenden Sie 'print self.frame.GetSize()' und sehen Sie, was Sie bekommen. –

Antwort

1

Fügen Sie diese sein Vordergrund Ihren Anruf app.MainLoop():

import wx.lib.inspection 
wx.lib.inspection.InspectionTool().Show() 

, dass man leicht die tatsächliche Größe (und andere Informationen) für jedes Widget in der Anwendung, so sehen lassen:

Widget Inspection Tool

Verwandte Themen