UI programming info for all

Please devs, we (I) need some kind of course or even a basic tutorial on how to start programming Blender’s UI. This could be so helpful to all those who want to fix some UI elements to suit their workflow and stuff. Plus, it would be much easier for you UI programmers if us users could tap in and help with the UI programming once in a while. I really like Blender’s current UI, but I also have so many changes I would like to make. I’m a user from Modo, and I really miss the UI, but I love Blender so much I’d like to merge Modo’s UI design with it. Plus, an addon programming course would be fantastic!


You’ll find most of the UI code here: blender\release\scripts\startup\bl_ui

You can edit the Python UI scripts in the Blender Text Editor, and when running them, instantly see the changes.

Well… not really :slight_smile: There you will find most of the UI layout code, but many many parts of the UI are not defined there.

Please give me SOMETHING :cry:

Here’s a page with some general info for new developers: https://wiki.blender.org/wiki/Developer_Intro

The first thing is obviously to get Blender’s source code and get it building.

Blender’s entire user interface is drawn on the screen via OpenGL. Most of the UI is defined in C, and some parts, like most of the layouts, in Python.

As for the UI code in particular, it is defined in places like:

  • source⁩/⁨blender/⁨editors/⁨Interface
  • source/blender/editors⁩ (each editor has C files that define how each editor works and is laid out)
  • release⁩/scripts⁩/startup⁩/⁨bl_ui⁩ (as already mentioned, here is the Python layout code)

In the Blender Text Editor, go to Templates Menu > Python. The last several items in the list are UI related. Play around with the different scripts here and see what your changes do. If you want to learn more about what a certain method is doing, search online for “Blender Python 2.80 API the_name_of_some_method” and you’ll see all of the arguments and properties available to you.

This is awesome advice. I hadn’t noticed the Python UI templates before.