如何在wxPython中跨多个监视器创建帧?

如何在wxPython中跨多个监视器创建帧?,python,wxpython,Python,Wxpython,我试图在wxPython中创建一个跨越多个屏幕的框架。我正在尝试的设置包括一个1366x768的监视器和另一个1080x1920的纵向模式的监视器 win32api中的GetSystemMetrics(76)和GetSystemMetrics(77)生成0和-1144,以获得虚拟屏幕区域的左上方 GetSystemMetrics(78)和GetSystemMetrics(79)为我提供了2446x1920的总虚拟屏幕分辨率 当我调用pos=(GetSystemMetrics(76)、GetSys

我试图在wxPython中创建一个跨越多个屏幕的框架。我正在尝试的设置包括一个1366x768的监视器和另一个1080x1920的纵向模式的监视器

win32api中的GetSystemMetrics(76)和GetSystemMetrics(77)生成0和-1144,以获得虚拟屏幕区域的左上方

GetSystemMetrics(78)和GetSystemMetrics(79)为我提供了2446x1920的总虚拟屏幕分辨率

当我调用pos=(GetSystemMetrics(76)、GetSystemMetrics(77))和size=(GetSystemMetrics(78)、GetSystemMetrics(79))的帧时,出于某种原因,它只会给我一个具有第一个监视器大小的帧

导入wx
从win32api导入GetSystemMetrics
类SelectableFrame(wx.Frame):
c1=无
c2=无
定义初始化(自我、父项、id、标题、位置、大小):
wx.Frame.\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
自我展示(真实)
self.toggleWindowsStyle(wx.保持在顶部)
self.SetFocus()
self.Raise()
打印(pos)
印刷品(尺寸)
self.Bind(wx.EVT_运动,self.OnMouseMove)
self.Bind(wx.EVT\u LEFT\u DOWN,self.OnMouseDown)
self.Bind(wx.EVT\u LEFT\u UP,self.OnMouseUp)
self.Bind(wx.EVT_-PAINT,self.OnPaint)
self.SetCursor(wx.Cursor(wx.Cursor\u CROSS))
self.alphaValue=100
self.SetTransparent(self.alphaValue)
自我最大化(真)
def OnMouseMove(自身、事件):
全球x2,y2
如果event.Dragging()和event.LeftIsDown()为:
self.c2=event.GetPosition()
x2=自我。c2.x
y2=自我。c2。y
self.Refresh()
def OnMouseDown(自身、事件):
全局x1,y1
self.c1=event.GetPosition()
x1=自我。c1.x
y1=自身c1.y
self.Refresh()
def OnMouseUp(自我、事件):
打印(self.c1)
打印(self.c2)
self.SetCursor(wx.Cursor(wx.Cursor_箭头))
自我毁灭
def OnPaint(自身、事件):
如果self.c1为无或self.c2为无:返回
bdc=wx.PaintDC(自)
dc=wx.GCDC(bdc)
dc.SetPen(wx.Pen('红色',1))
直流立根刷(wx刷(wx颜色(0,0,0),wx透明))
dc.DrawRectangle(self.c1.x,self.c1.y,self.c2.x-self.c1.x,self.c2.y-self.c1.y)
如果名称=“\uuuuu main\uuuuuuuu”:
app=wx.app(重定向=False)
selectionFrame2=SelectableFrame(
父项=无,
id=wx.id\u任何,
title=“”,
pos=(GetSystemMetrics(76),GetSystemMetrics(77)),
大小=(GetSystemMetrics(78),GetSystemMetrics(79))
)
selectionFrame2.Show(True)
app.MainLoop()
我如何在wxPython中生成这个扩展到多个监视器的框架,并将其设置为可以与任何监视器组合使用

wx.Display.GetCount()
# then you can get the geometry for each display
d = wx.Display(0)
d.GetGeometry()
这将为您提供显示器的真实尺寸和位置


这将为您提供显示的真实大小和位置。

尝试删除self.Maximize()调用,看看它是否有效…尝试删除self.Maximize()调用,看看它是否有效…谢谢!我用你的建议为每个显示创建了一个框架。如果答案解决了你的问题,请将其标记为已接受(答案左侧投票按钮下的灰色组合框)。这在StackOverflow上被认为是礼貌的。还有一些人关心标签统计。谢谢!我用你的建议为每个显示创建了一个框架。如果答案解决了你的问题,请将其标记为已接受(答案左侧投票按钮下的灰色组合框)。这在StackOverflow上被认为是礼貌的。还有一些人关心标签统计。