如何在桌面中间制作我的wxpython顶级框架?

Sha*_*ane 8 python user-interface wxpython

我想让我的GUI程序顶部框架垂直和水平对齐.

wx.Frame.__init__(self, parent=None, id= -1, title="Test Frame", pos=(-1, -1), size=(1280, 770), style=wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX)
Run Code Online (Sandbox Code Playgroud)

我应该怎么做(除了计算以找到绝对位置)以pos=(-1, -1)使其显示在中间(无论是800*600还是1280*800等),还是需要一些其他属性设置?

erb*_*dge 17

简单地使用

self.Center()
Run Code Online (Sandbox Code Playgroud)

在班上__init__()而不是pos=(-1,-1).

  • 确保在创建所有子控件和`Fit`后调用`Center`,以便正确初始化大小. (4认同)

Tyr*_*ave 6

w = wx.SystemSettings.GetMetric(wx.SYS_SCREEN_X)
h = wx.SystemSettings.GetMetric(wx.SYS_SCREEN_Y)

pos=(w/2, h/2)
Run Code Online (Sandbox Code Playgroud)

这使您成为屏幕的中心.

现在,假设您有一个800x600大小的应用程序:

APPWIDTH = 800
APPHEIGHT = 600

w = wx.SystemSettings.GetMetric(wx.SYS_SCREEN_X)
h = wx.SystemSettings.GetMetric(wx.SYS_SCREEN_Y)

# Centre of the screen
x = w / 2
y = h / 2

# Minus application offset
x -= (APPWIDTH / 2)
y -= (APPHEIGHT / 2)

pos=(x, y)
Run Code Online (Sandbox Code Playgroud)