如何让我的WXPython顶部帧显示在我的桌面中间?

如何让我的WXPython顶部帧显示在我的桌面中间?,python,user-interface,wxpython,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) 我应该做什么(除了计算以找到绝对位置)来pos=(-1,-1)使其显示在中间(无论是800*600还是1280*800等),

我想让我的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)
我应该做什么(除了计算以找到绝对位置)来
pos=(-1,-1)
使其显示在中间(无论是800*600还是1280*800等),或者还需要一些其他属性设置

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

pos=(w/2, h/2)
这将显示屏幕的中心

现在,假设您有一个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)
简单使用

self.Center()

在类
\uuuu init\uuuu()
中,而不是
pos=(-1,-1)
pos=(w/2,h/2)
仅使框架的左上角显示在桌面的中心,而不是整个框架。也许没有一行属性来完成这项工作,我想仍然需要计算。无论如何谢谢你@谢恩,这是给定的,我所做的计算将给出屏幕的中心。假设您知道程序的尺寸,减去一半宽度和高度,框架将居中。我已经调整了我的答案来说明这一点。有一个输入错误:
wx.SYS\u SCREEN\u y
应该是
wx.SYS\u SCREEN\u y
(注意大写y)在创建所有子控件和
Fit
之后一定要调用
Center
,以便正确初始化大小。至少在我的系统上(Ubuntu 14.04,wxgtk 2.8.12.1),这不包括扩展桌面配置,即窗口可能从主屏幕消失。