Hackish way to generate QTableEvents.
Create new document and run script in Scripter.
Note: pan, rotate and zoom are ignored.
from random import random
from krita import Krita
from PyQt5.QtCore import (
Qt,
QPoint,
QPointF,
QEvent)
from PyQt5.QtGui import (
QTabletEvent,)
from PyQt5.QtWidgets import (
QWidget,
QApplication)
def find_current_canvas():
app = Krita.instance()
q_window = app.activeWindow().qwindow()
q_stacked_widget = q_window.centralWidget()
q_mdi_area = q_stacked_widget.currentWidget()
q_mdi_sub_window = q_mdi_area.currentSubWindow()
view = q_mdi_sub_window.widget()
for c in view.children():
if c.metaObject().className() == 'KisCanvasController':
# first QWidget child of viewport should be canvas...
viewport = c.viewport()
canvas = viewport.findChild(QWidget)
return canvas
def click_canvas(pos):
"""
https://doc.qt.io/qt-5/qtabletevent.html
"""
canvas = find_current_canvas()
global_pos = QPointF(canvas.mapToGlobal(pos.toPoint())) # precision is lost ???
device = QTabletEvent.Stylus
pointer_type = QTabletEvent.Pen
pressure = random()
x_tilt = 0
y_tilt = 0
tangential_pressure = 0.0
rotation = 0.0
z_pos = 0
key_state = Qt.NoModifier
unique_id = 1234 # ???
button = Qt.LeftButton
buttons = Qt.LeftButton
table_press = QTabletEvent(
QEvent.TabletPress,
pos,
global_pos,
device,
pointer_type,
pressure,
x_tilt,
y_tilt,
tangential_pressure,
rotation,
z_pos,
key_state,
unique_id,
button,
buttons)
table_release = QTabletEvent(
QEvent.TabletRelease,
pos,
global_pos,
device,
pointer_type,
pressure,
x_tilt,
y_tilt,
tangential_pressure,
rotation,
z_pos,
key_state,
unique_id,
button,
buttons)
canvas.activateWindow()
QApplication.sendEvent(canvas, table_press)
QApplication.sendEvent(canvas, table_release)
# plot some random points...
for i in range(200):
pos = QPointF(random() * 1000.0, random() * 1000.0)
click_canvas(pos)
/AkiR