Я пытаюсь заставить утилиту снимков экрана работать после ее переноса с:
PyQt4 -> PyQt5
Python 2.7 -> Python 3.7
Ubuntu -> Windows 7
оригинальный код
новый перенесенный код
Я изменил все ссылки на Qt4 на Qt5 и получил его в основном работающим, за исключением функции Select Area
, которая позволяет выбирать область наэкран путем рисования прямоугольника.Эта часть завершается с ошибкой:
resArea: Traceback (most recent call last):
File "screenshot.py", line 318, in <module>
d = display.Display()
File "C:\Users\frak\AppData\Local\Programs\Python\Python37\lib\site-packages\python_xlib-0.24-py3.7.egg\Xlib\display.py", line 89, in __init__
File "C:\Users\frak\AppData\Local\Programs\Python\Python37\lib\site-packages\python_xlib-0.24-py3.7.egg\Xlib\display.py", line 71, in __init__
File "C:\Users\frak\AppData\Local\Programs\Python\Python37\lib\site-packages\python_xlib-0.24-py3.7.egg\Xlib\protocol\display.py", line 85, in __init__
File "C:\Users\frak\AppData\Local\Programs\Python\Python37\lib\site-packages\python_xlib-0.24-py3.7.egg\Xlib\support\connect.py", line 72, in get_display
File "C:\Users\frak\AppData\Local\Programs\Python\Python37\lib\site-packages\python_xlib-0.24-py3.7.egg\Xlib\support\connect.py", line 55, in _relative_import
File "C:\Users\frak\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
File "C:\Users\frak\AppData\Local\Programs\Python\Python37\lib\site-packages\python_xlib-0.24-py3.7.egg\Xlib\support\unix_connect.py", line 31, in <module>
ModuleNotFoundError: No module named 'fcntl'
Я знаю, что fcntl
не поддерживается в Windows, но я думаю, что может быть обходной путь, так как я думаю, что код пытается сделать, это получить некоторый экранРазмеры, прежде чем продолжить.
Все исследования, которые я провел до сих пор, указывают мне на другие вещи, такие как pyscreenshot
или альтернативные реализации, которые выполняют только полноэкранный захват, но не имеют прямоугольного селектора для выбора области экрана.
Мне нравится эта реализация, потому что она показывает вам быстрый предварительный просмотр и опции, чтобы выбрать область, настроить задержку, скрыть окно и сохранить в файл.
Любая помощь будет принята с благодарностью