Я новичок в wxPython, и я нахожу некоторые проблемы при настройке заданного размера для обоих фреймов и окон (виджеты). Я выделил проблему в простейшем случае, когда я пытаюсь создать кадр размером 250x250 пикселей.Установить размер wx.Frame (wxPython - wxWidgets)
Выполнение кода я получаю окно фактического размера 295 шириной от 307 высота (с учетом Windows's верхней панели окна)
Я использую Python 2.7 в ОС Windows 10.
Что мне не хватает?
#!/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()
ДОПОЛНИТЕЛЬНО тест на дальнейшее шоу выпуска:
#!/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()
И результат:
Как вы можете видеть, отображаемое окно (кадр) имеет 482 пикселей (нижняя бар- -см краски) вместо ожидаемого 400.
Window size measured in pixels
Как вы измеряете размеры рамки? –
Я делаю скриншот в Windows 10 с помощью клавиши Alt + PrintScreen. Затем я просто измеряю ширину в Paint. –
Сделайте свой размер экрана и сделайте ширину рамки, затем используйте 'print self.frame.GetSize()' и посмотрите, что вы получаете. –