Python Forum
Using 2 screens in wxpython
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Using 2 screens in wxpython
I am trying to use a 19" T.V with my laptop connecting it via the hdmi port.
I am running python 3.53 and wxpython 4.0.2 on my Linux Mint 18.2 HP laptop.
I found a script which allowed me to set this up. I have just been testing it out but there seems to be a snag.
num_displays = wx.Display.GetCount()

#Open a frame on each display
for display_num in range(0,num_displays):
#Get a display object
    display = wx.Display(display_num)
#To get a wx.Rect that gives the geometry of a display
    geometry = display.GetGeometry()

#Create a frame on the display
    if display_num == 0:
        frame0 = wx.Frame(None,-1,"Display %d"%display_num, geometry.GetTopLeft(),geometry.GetSize())
        frame1 = wx.Frame(None,-1,"Display %d"%display_num, geometry.GetTopLeft(),geometry.GetSize())
vbox0 = wx.BoxSizer(wx.VERTICAL)

gs = wx.GridSizer(6, 5, 10, 10)
for msg in range(1,27):
    mytext = str(msg)
    gs.Add(wx.Button(frame0, label=mytext), 0, border=10)
vbox0.Add(gs, proportion=.3, flag=wx.TOP)

vbox1 = wx.BoxSizer(wx.VERTICAL)

gt = wx.GridSizer(6, 5, 15, 15)
for msg in range(1,27):
    mytext = str(msg)
    gt.Add(wx.Button(frame1, label=mytext), 0, border = 15)
vbox1.Add(gt, proportion=.9, flag=wx.TOP)
With this the BoxSizer in frame0 ( my laptop ) appears correctly but the other one has half the column of buttons on the left obscured but not showing on my laptop screen.
import wx
myapp =wx.App()
for idx in range(wx.Display.GetCount()):
    d = wx.Display(idx)
    print( d.IsPrimary(), d.GetGeometry())
Shows the screens as 1336 x 768 ( laptop )
and 1920 x 1080 ( T.V )
altering the code for the T.V as
frame1 = wx.Frame(None, -1, size=(1860,1080), pos=(2100, 0))
frame1.SetTitle('Frame 1')
#frame1 = wx.Frame(None,-1,"Display %d"%display_num, geometry.GetTopLeft(),geometry.GetSize())
I have to position the vbox way over to the right of where I expect it should be so all columns of buttons show correctly.
I expect I am doing something wrong but I hope someone can say what that is.
Any ideas please?
I made a mistake with the above. In fact with my second way of placing the vbox using pos it does display correctly. This is true with python 3.5.3 and 3.64

Forum Jump:

User Panel Messages

Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020