In this simple tutorial, I will show you how to create a docker in the Krita software and add some GUI elements with PyQt5. You need to take the docker template from the official page and modify it.
After you download the zip, unzip the contents in the local pykrita folder.
This can be found at:
- Windows (paste this in file browser) – %APPDATA%\krita\pykrita
- Linux ~/.local/share/krita/pykrita
- Apple ~/Library/Application Support/Krita/pykrita
This is the result:
The example is very easy to understand from the source code in the Python programming language.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | try: import sys import urllib.request load = "YES! " except: load = "NO! " from krita import DockWidget from PyQt5.Qt import PYQT_VERSION_STR from PyQt5.QtWidgets import ( QWidget, QVBoxLayout, QHBoxLayout, QComboBox, QAction, QTabWidget, QLineEdit, QSpinBox, QDialogButtonBox, QToolButton, QDialog, QStatusBar, QPlainTextEdit, QCompleter, QMenu, QMessageBox, QLabel, QPushButton, QToolBar) from PyQt5.Qt import Qt, pyqtSlot from PyQt5.QtGui import QPixmap,QIcon from krita import DockWidget, Palette, PaletteView DOCKER_TITLE = 'Blank Template Docker' class DockerTemplate(DockWidget): def __init__(self): super(DockerTemplate, self).__init__() self.setWindowTitle(DOCKER_TITLE) self.__installed=False msg = u""" You can find more about my work ... \n Use a simple search with my nicknames: \n catafest and mythcat \n Thank you for your support !\n """ about = QMessageBox() about.setGeometry(450, 300, 200, 200) about.setIcon(QMessageBox.Information) about.setText(u"This is a simple docker example by catafest!") msg1 = msg + "\n Python version: " + str(sys.version) msg2 = "\n Load sys and urllib python packages: "+load about.setInformativeText(msg1 + msg2) about.setWindowTitle(u"DOKER example - catafest") about.setStandardButtons(QMessageBox.Ok) about.exec_() widget = QWidget() layout = QVBoxLayout() buttonLayout = QHBoxLayout() widget.setLayout(layout) self.statusBar = QStatusBar() self.statusBar.showMessage("Ready") layout.addWidget(self.statusBar) self._myQLabel=QLabel('This is a QLabel!') layout.addWidget(self._myQLabel) self.qpushButton = QPushButton(self) self.qpushButton.setText("This is a QPushButton!") self.qpushButton.setShortcut('Ctrl+F') self.qpushButton.clicked.connect(self.showDetail) layout.addWidget(self.qpushButton) self.setWidget(widget) def showDetail(self): self._myQLabel.setText("QPushButton working") def canvasChanged(self, canvas): if not self.__installed: if Krita.instance().activeWindow(): win=Krita.instance().activeWindow().qwindow() win.installEventFilter(self) self.__installed=True pass |