Skip to main content

Declarative Tkinter UI using makup language with reactive data binding

Project description

License Build Quality Gate Minarca Client Coverage


Declarative Tkinter UI using makup language with reactive data binding.


TKVue bring familiar advantages in web development to traditional development. This project allow you to create modern graphical user interface written in Python using Tkinter library.

TKVue provide a declarative language to build user interface with Markup language.

<Label text="Hello world!" />

TKVue provide databinding to quickly make your graphical user interface dynamic.

<ComboBox pack-side="left" pack-expand="1" values="['zero', 'one', 'two', 'three']" textvariable="{{ myvariable }}" />
<Label text="{{ myvariable }}" />

TKVue provide a babel entry point to support internationalization.


[tkvue: **/templates/**.tkml]


TKVue is available on pypi and can be installed using pip.

pip install tkvue


Once installed you may take a look at various examples available:

Help is welcome to write proper documentation about how to use TKVue.


If you need help or experience problem while using TKvue, open a ticket in Gitlab.


Once you have customize the Tkinter themes, the result could be astonishing. Here the result of Minarca interface build using TKVue.

Minarca Agent graphical user interface build with TKVue


Tkvue provide a babel extention to extract static text from xml template.

You must configure babel to use the right plugin to extract the values from the templates.


[tkvue: **/templates/**.tkml]

Then You may use babel and other gettext tools to complete the translation using the .po file.

python extract_messages

See Also

Other Tkinter-related projects worth mentioning:

  • witkets: Create Tkinter interface using XML similar to TKVue
  • ttkbootstrap: Theme extension for tkinter inspire by Bootstrap


Next Release

  • Add example to create Modal Dialog
  • Provide the @tkvue.widget annotation to register a new widget.
  • Provide the @tkvue.attr annotation to register the custom attributes of the widget.

2.0.3 (2023-02-26)

2.0.2 (2023-02-08)

  • Add example to demonstrate usage of variables
  • Add example to demonstrate usage of visible= attribute to show or hide widget
  • Add example to demonstrate usage of for= attribute to create list of widget
  • Add example to demonstrate style customization

2.0.1 (2023-01-16)

  • Support assignment of None to <Label image="..." > to hide image
  • Add example to demonstrate usage of <Progressbar>

2.0.0 (2022-12-13)

  • Implement mainloop using asyncio to avoid multi-threading #1
  • Increase default offset when displaying <Tooltip> to avoid flikering when user hover a widget
  • <ScrolledFrame> inherit the background color from the style
  • Show or hide scroll bar of <ScrolledFrame> when needed
  • Pin version of black, isort and flake8
  • Add support for place geometry manager

1.0.1 (2022-11-09)

  • Fix license badge
  • Declare babel entry point for translation
  • Add combobox example
  • Use private gitlab runner for running test

1.0.0 (2022-04-06)

  • Initial version of TKVue writting for Minarca project

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release. See tutorial on generating distribution archives.

Built Distribution

tkvue-2.0.5-py3-none-any.whl (632.7 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page