# Question regarding custom tools

**URL:** <https://krita-artists.org/t/question-regarding-custom-tools/61803>\
**Category:** Developer Questions\
**Tags:** scripting-help\
**Created:** [April 3, 2023, 3:24am UTC](https://krita-artists.org/t/question-regarding-custom-tools/61803 "2023-04-03T03:24:00Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gigaus](https://krita-artists.org/letter_avatar_proxy/v4/letter/g/b3f665/32.png) [@Gigaus](https://krita-artists.org/u/Gigaus)\
**Post date:** [April 3, 2023, 3:24am UTC](https://krita-artists.org/t/question-regarding-custom-tools/61803/1 "2023-04-03T03:24:00Z")

</div>

So I have two questions off hand regarding coding a plugin for Krita.

First should be, it is possible to make custom tools/macros from pre-existing tools, correct? AT the moment, I want to see if it’s possible to either get the Transformation-Warp subtool to move neighboring nodes proportional to the node being moved, rather than staying still/fixed, or make a copy of the subtool that might do so. I’m not concerned with the details of how to do it yet-- unless someone’s already made a plugin that does that-- I’m only concerned _if_ it is possible?

And the second question is, where could I find the python keyword manual for Krita? That is, a glossary of the actions, classes, ect.? I understand Python and a couple other langs, but I’m failing to find the references I’d need to start actually working on a plugin. Besides ‘hello world’ kind of stuff.

---

<div class="post-metadata">

**Author:** ![sooz](https://krita-artists.org/user_avatar/krita-artists.org/sooz/32/93244_2.png) [@sooz](https://krita-artists.org/u/sooz)\
**Post date:** [April 3, 2023, 3:36am UTC](https://krita-artists.org/t/question-regarding-custom-tools/61803/2 "2023-04-03T03:36:31Z")

</div>

Welcome to the forum, @Gigaus.

I wonder if this will be helpful:

> **[Introduction to Python Scripting](https://docs.krita.org/en/user_manual/python_scripting/introduction_to_python_scripting.html)**
>
> Introduction to using Krita's python plugin API.

---

<div class="post-metadata">

**Author:** ![Michelist](https://krita-artists.org/user_avatar/krita-artists.org/michelist/32/65826_2.png) [@Michelist](https://krita-artists.org/u/Michelist)\
**Post date:** [April 3, 2023, 6:42am UTC](https://krita-artists.org/t/question-regarding-custom-tools/61803/3 "2023-04-03T06:42:22Z")

</div>

I think you are looking for things like these:

This one is a gem! →

> [@Python Plugin Developer Tools](https://krita-artists.org/t/python-plugin-developer-tools/30615):
>
> Introducing Python Plugin developer Tools! The goal of these tools is to make it easier for people to develop python plugins. Current features include: Selector/Sampler - for selecting with the mouse PyQt5 objects. Hold the shift key(or optionally ctrl/alt/meta key) and move the mouse as you wish, when you find the item you want, let go of the shift and it will show up in inspector. Inspector - Lets you browse/search the PyQt5 tree and also view all the properties (including inher…

> **[GitHub - rbreu/krita-plugin-python-reference: A Krita plugin that displays a...](https://github.com/rbreu/krita-plugin-python-reference)**
>
> A Krita plugin that displays a searchable overview of the Python API - GitHub - rbreu/krita-plugin-python-reference: A Krita plugin that displays a searchable overview of the Python API

[https://scripting.krita.org/lessons/introduction](https://scripting.krita.org/lessons/introduction)

Michelist

---

<div class="post-metadata">

**Author:** ![Takiro](https://krita-artists.org/user_avatar/krita-artists.org/takiro/32/209381_2.png) [@Takiro](https://krita-artists.org/u/Takiro)\
**Post date:** [April 3, 2023, 7:44am UTC](https://krita-artists.org/t/question-regarding-custom-tools/61803/4 "2023-04-03T07:44:35Z")

</div>

The python API in Krita is pretty limited when it comes to hooks and callbacks of existing tools. The tools in Krita are not written in Python so you can’t just copy paste them or inherit and extend them in a plug in. To change things like what you described you need to dig deeper, into the C++ code.

---

<div class="post-metadata">

**Author:** ![Michelist](https://krita-artists.org/user_avatar/krita-artists.org/michelist/32/65826_2.png) [@Michelist](https://krita-artists.org/u/Michelist)\
**Post date:** [April 3, 2023, 8:50am UTC](https://krita-artists.org/t/question-regarding-custom-tools/61803/5 "2023-04-03T08:50:20Z")

</div>

And this may come in handy too: The KDE API Reference for Krita →

> **[Krita - Krita Painting application](https://api.kde.org/krita/html/index.html)**
>
> KDE products API documentation

I think you’ll have found Krita’s repo via the link given by @sooz, but in case that not, the repo can be found here:

> **[Graphics / Krita · GitLab](https://invent.kde.org/graphics/krita)**
>
> Krita is a free and open source cross-platform application that offers an end-to-end solution for creating digital art files from scratch built on the KDE and Qt frameworks.

Michelist
