Найти - Пользователи
Полная версия: PyQt5 скриншот виджета
Начало » Python для новичков » PyQt5 скриншот виджета
1
Temp
Доброго времени суток!
Код следующий:
 image = QtGui.QImage(self.ui.my_table_widget.grab())
QtWidgets.QApplication.clipboard().setImage(image, QClipboard.Clipboard)
код адекватно делает скрин виджета и отправляет его в буфер обмена, но скриншот делается исключительно по размерам виджета, не больше, ни меньше.
Если элементов в списке больше, чем может поместится в геометрию виджета (появляется скроллбар), то они не попадают в скриншот. Как исправить?
Rodegast
Перед скриншотом меняй геометрию окна что бы всё уместилось. Иначе никак.
Temp
Rodegast
Перед скриншотом меняй геометрию окна что бы всё уместилось. Иначе никак.
Нашел следующее решение:
Пихаем table widget в scroll area ставим в нем lay out
В resizeEvent насильно меняем высоту и ширину table widget относительно его содержимого
теперь будем делать скрин не table widget, а scroll area, так как там можно сделать так
 image = QtGui.QImage(self.ui.scrollArea.widget().grab())
QtWidgets.QApplication.clipboard().setImage(image, QClipboard.Clipboard)
и на выходе получаем нужного размера скриншот всей таблицы почти без костылей, правильно подогнав размеры таблицы к scroll area, этого костыля не видно.



Rodegast
> Нашел следующее решение

Не факт что это решение будет работать со всеми виджетами. В виджете может быть отрисовка только видимой части и тогда ты будешь грабить только то что видит пользователь.
Temp
Rodegast
> Нашел следующее решениеНе факт что это решение будет работать со всеми виджетами. В виджете может быть отрисовка только видимой части и тогда ты будешь грабить только то что видит пользователь.
Так весь прикол в том что из-за того что это не работает со всеми виджетами и была создана эта тема.
Но работает со scroll area, а в него в свою очередь пихаешь необходимый виджет. Это так сказать костыль, и он на мой взгляд лучше того костыля, что ты предложил про изменение геометрии окна под виджет, да и в окне помимо данного виджета будет куча других.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB