Content of mss().monitors does not correspond with secondary screen resolution, cannot take screenshots (Windows 8.1)
See original GitHub issueGeneral informations:
- OS name: Windows
- OS version: 8.1
- OS architecture: 64 bits
- Monitor(s)'s resolution: Monitor 1: 1600x900 ; Monitor 2: 1920x1080
- Result of the command
python --version
: Python 2.7.9
Description of the warning/error
The content of mss().monitors is incorrect:
import mss
for monitor in mss.mss().monitors:
print monitor
Return:
{'width': 2880, 'top': 0, 'height': 900, 'scale': 1.0, 'left': 0}
{'width': 1600, 'top': 0, 'height': 900, 'scale': 1.0, 'left': 0}
{'width': 1280, 'top': 0, 'height': 720, 'scale': 1.0, 'left': 1600}
The third line does not correspond with the secondary monitor resolution.
Full message
Here is a testing script I made:
import mss
import mss.tools
from Tkinter import *
app = Tk()
def screenshot():
top = btn.winfo_rooty()
left = btn.winfo_rootx()
width = btn.winfo_width()
height = btn.winfo_height()
selection = {'top': top, 'left': left, 'width': width, 'height': height}
sct_img = mss.mss().grab(selection)
mss.tools.to_png(sct_img.rgb, sct_img.size, output="screenshot.png")
btn=Button(app, text="Grab a screenshot", command=screenshot)
btn.pack(fill=X,padx=50, pady=50)
print "Monitors:"
for monitor in mss.mss().monitors:
print monitor
app.mainloop()
The script creates a simple Tkinter windows with a buton. A click on the buton save a screenshot of that button, using the coordinate provided by Tkinter.
This works when the windows is on the primary monitor, but does not work after I drag the windows on the secondaty monitor: the screenshot represents another part of the monitor.
Other details
When I set the secondary monitor resolution to correspond with the resolution provided by mss, then the screenshot works perfectly on both monitors.
The script works just fine on Ubuntu.
Issue Analytics
- State:
- Created 6 years ago
- Comments:6 (3 by maintainers)
Top Results From Across the Web
Dual Monitors not displaying correctly in Windows 8.1
I opened the screen resolution menu and tried to make my monitor the primary display, but the option was disabled.
Read more >mss sct.grab won't let me select which monitor to use
It seems I can either get a partial screenshot, but not choose the monitor, or I can choose the monitor, but only get...
Read more >Citrix Fixes and Known Issues – XenApp & XenDesktop ...
Users are unable to launch published applications intermittently with no error being displayed to the user. Citrix Studio also shows an active ...
Read more >Snagit Changes Screen Resolution - Can't Capture Parts of a ...
I use Snagit 2018 on a laptop connected with an external monitor.Of late when I try to capture a screenshot, Snagit lowers the...
Read more >AW-HE130WPE_KPE_OPERATION(VQT5L27A-2)_E.pdf
does not fit into your outlet, consult an electrician for replacement of the obsolete ... What is shown in the manual's illustrations and...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Hi! It maybe also an issue with my specific installation of Windows 8.1 (maybe the drivers or something else). This is not for a critical feature, so I pushed the code “in production” anyway. I will let you know if I get similar feedback.
It will be hard for me to reproduce, I have no W8.1. The code that guesses monitors information is here, it seems legit but perhaps could you find something wrong here.