Using 2 screens in wxpython - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: Using 2 screens in wxpython (/thread-11200.html) |
Using 2 screens in wxpython - Barrowman - Jun-27-2018 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()) frame0.Show() else: frame1 = wx.Frame(None,-1,"Display %d"%display_num, geometry.GetTopLeft(),geometry.GetSize()) frame1.Show() 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) frame0.SetSizer(vbox0) #========================================================================================= 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) frame1.SetSizer(vbox1)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. Running 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()) frame1.Show()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? RE: Using 2 screens in wxpython - Barrowman - Jun-27-2018 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 |