# Recommended GUI for OpenCV and Python

**URL:** <https://forum.opencv.org/t/recommended-gui-for-opencv-and-python/11294>\
**Category:** Python\
**Created:** [December 12, 2022, 8:03pm UTC](https://forum.opencv.org/t/recommended-gui-for-opencv-and-python/11294 "2022-12-12T20:03:23Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![fpelegri](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opencv.org/fpelegri/32/5999_2.png) [@fpelegri](https://forum.opencv.org/u/fpelegri)\
**Post date:** [December 12, 2022, 8:03pm UTC](https://forum.opencv.org/t/recommended-gui-for-opencv-and-python/11294/1 "2022-12-12T20:03:23Z")

</div>

Hi!

I am building an application that could have multiple frame outputs that I use to show by applying “cv2.imshow” function, but I would like to know what are the best GUI frameworks to start developing a simple application that show 2 images, one from webcam stream, some buttons like EXIT, PAUSE, etc. and Test field to add info.

There are so many, one more complex than others, PyQT5, Tkinter, PySimpleGUI, PyGUI, PySimpleGUI…

What do you recommend in terms of simplicity and performance?

Thanks!

---

<div class="post-metadata">

**Author:** ![crackwitz](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opencv.org/crackwitz/32/14_2.png) [@crackwitz](https://forum.opencv.org/u/crackwitz)\
**Post date:** [December 12, 2022, 10:26pm UTC](https://forum.opencv.org/t/recommended-gui-for-opencv-and-python/11294/2 "2022-12-12T22:26:36Z")

</div>

depends on which you’re familiar with.

you can stick with OpenCV’s `imshow` and handle your own mouse events. with multiple `imshow` windows I’ve noticed some issues (on win32) where only the focused window receives enough event loop attention to keep updating at 60 fps (all others start stuttering).

Tkinter comes with Python, which is an advantage. disadvantage: it’s cruddy. Image data is internally serialized to ASCII formats because of how tcl/tk works. don’t expect too much of it.

Qt seems popular. I don’t like it for various reasons and I seem to be in good company with that position.

wxWidgets seems to enjoy some popularity, partially due to its kinda rich ecosystem of solid base widgets. it comes with a “property grid”, which is a fairly complex widget. you don’t get that with Qt (they have it but it’s not documented and not supported, which is dumb).

or go with whatever’s popular in the C# world, and use C# with “opencvsharp” or whatever’s the most popular wrapper these days. with that approach you’ll get to choose between WinForms and WPF, which are solid technologies with solid tool support.

All the pygui/pysimplegui stuff is just going to be a headache, so don’t even bother. also don’t bother with anything that uses “web” technologies bolted onto Python. that’ll never perform well, if you want to display live video.

---

<div class="post-metadata">

**Author:** ![fpelegri](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opencv.org/fpelegri/32/5999_2.png) [@fpelegri](https://forum.opencv.org/u/fpelegri)\
**Post date:** [December 14, 2022, 8:00am UTC](https://forum.opencv.org/t/recommended-gui-for-opencv-and-python/11294/4 "2022-12-14T08:00:04Z")

</div>

Thanks for the feedback! they are some good advises 🙂

---

<div class="post-metadata">

**Author:** ![berak](https://avatars.discourse-cdn.com/v4/letter/b/85f322/32.png) [@berak](https://forum.opencv.org/u/berak)\
**Post date:** [January 1, 2023, 1:21pm UTC](https://forum.opencv.org/t/recommended-gui-for-opencv-and-python/11294/5 "2023-01-01T13:21:49Z")

</div>

A post was split to a new topic: [Silhouette plugin](https://forum.opencv.org/t/silhouette-plugin/11467)

---

<div class="post-metadata">

**Author:** ![4lexO](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opencv.org/4lexo/32/6915_2.png) [@4lexO](https://forum.opencv.org/u/4lexO)\
**Post date:** [January 10, 2023, 10:27am UTC](https://forum.opencv.org/t/recommended-gui-for-opencv-and-python/11294/6 "2023-01-10T10:27:21Z")

</div>

Hi,  
I used GTK3 (now in version4 “GTK4”) that has resources on the web and works with OPENCV.
