Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 25, 2014 10:15:04

demonklein
Зарегистрирован: 2014-06-25
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Можно ли использовать PyQt и PyGTK одновременно?

Добрый День.
У меня возникла проблема со скриншотами. Так как я хочу, чтобы все работало как в Windows, так и в Linux, по определению не подходит Imagegrab
Как сделать скрин в Pyqt5 я уже три дня понять не могу (скрн нужен именно области экрана, а не виджета

Казалось, что нашел неплохое решение в использовании PyGTK, написал модуль с одной функцией.
def screenGTK(x=0, y=0, w=600, h=450):
from gi.repository import Gdk
from PyQt5 import QtGui
win = Gdk.get_default_root_window()
pb = Gdk.pixbuf_get_from_window(win, x, y, w, h)
pb.savev(“screenshot.png”,“png”, (), ())

При запуске модуля отдельно - все работает, скрины штампуются как надо. При попытке импорта функции и ее вызова в QApplication, Python ругается
/home/demonklein/PycharmProjects/china/Screenerslot.py:59: Warning: cannot register existing type ‘GdkWindow’
app = QtWidgets.QApplication(sys.argv)
/home/demonklein/PycharmProjects/china/Screenerslot.py:59: Warning: g_param_spec_object: assertion ‘g_type_is_a (object_type, G_TYPE_OBJECT)’ failed
app = QtWidgets.QApplication(sys.argv)
/home/demonklein/PycharmProjects/china/Screenerslot.py:59: Warning: g_object_class_install_property: assertion ‘G_IS_PARAM_SPEC (pspec)’ failed
app = QtWidgets.QApplication(sys.argv)
/home/demonklein/PycharmProjects/china/Screenerslot.py:59: Warning: cannot register existing type ‘GdkScreen’
app = QtWidgets.QApplication(sys.argv)
/home/demonklein/PycharmProjects/china/Screenerslot.py:59: Warning: g_once_init_leave: assertion ‘result != 0’ failed
app = QtWidgets.QApplication(sys.argv)

(Screenerslot.py:9283): Gdk-CRITICAL **: IA__gdk_screen_get_default_colormap: assertion ‘GDK_IS_SCREEN (screen)’ failed

(Screenerslot.py:9283): Gdk-CRITICAL **: IA__gdk_colormap_get_visual: assertion ‘GDK_IS_COLORMAP (colormap)’ failed

Можно ли здесь что-нибудь сделать?
Если нет, то может подскажете, где брать winId, для того, чтобы все-таки сделать скриншот в PyQt?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version