Table of Contents

GUI frameworks for Linux

Python-centric

Tkinter

TL;DR: Perhaps OK for small, one-file utility apps

Pros

Cons

tkdemo.py
from tkinter import *
from tkinter import ttk
 
def do_nothing():
    print('passssss ...')
 
root = Tk()
root.option_add('*tearOff', False)
s=ttk.Style()
s.theme_use('clam')
 
# Menubar
menubar = Menu(root)
root.config(menu=menubar)
 
filemenu = Menu(menubar)
filemenu.add_command(label='New ...', accelerator='Ctrl + N', command=do_nothing)
filemenu.add_command(label='Open ...', accelerator='Ctrl + O', command=do_nothing)
filemenu.add_separator()
filemenu.add_command(label='Quit', accelerator='Ctrl + Q', command=root.destroy)
 
editmenu = Menu(menubar)
editmenu.add_command(label='Copy', accelerator='Ctrl + C', command=do_nothing)
editmenu.add_command(label='Cut', accelerator='Ctrl + X', command=do_nothing)
editmenu.add_command(label='Paste', accelerator='Ctrl + V', command=do_nothing)
 
menubar.add_cascade(label='File', menu=filemenu)
menubar.add_cascade(label='Edit', menu=editmenu)
 
# Toolbar
toolbar = ttk.Frame(root)
 
tb_foo = ttk.Button(toolbar, text='Foo', command=do_nothing)
tb_foo.pack(side=LEFT, padx=2, pady=2)
tb_bar = ttk.Button(toolbar, text='Bar', command=do_nothing)
tb_bar.pack(side=LEFT, padx=2, pady=2)
 
toolbar.pack(side=TOP, fill=X)
 
# Status bar
status = ttk.Label(root, text='System status: doing nothing', borderwidth=2, relief=SUNKEN, anchor=W)
status.pack(side=BOTTOM, fill=X)
 
# Go!
root.mainloop()

PyGObject

TL;DR: Perhaps best option for Linux-centric apps—unless/until some GNOME goofiness happens.

Replacing PyGTK.

Pros

Neutral/undecided

Cons

wxPython (including Phoenix)

TL;DR: Perhaps best option for multi-platform proprietary apps that have zero budget.

Pros

Cons

Awkward points:

PyQt

TL;DR: Perhaps best option for multi-platform FOSS apps and for proprietary apps that have a $500 tools budget.

Pros

Cons:

PySide

TL;DR: Abandonware? If not now, later?

Classic PySide was released in 2015 and works with Qt 4.8 framework. PySide2, which supports Qt5, is being developed, but it's not production ready, seems to be moving slowly, and doesn't seem to have much mindshare.

Kivy

TL;DR: Not really a desktop application framework. Well-suited to touch interfaces.

Pros

libavg

Needs research

Pros

PyGui

Is a wrapper around desktop toolkits. On Linux, wraps PyGTK right now, PyGObject in the future.

1)
on Debian, qttools5-dev-tools will get standalone Qt Designer and other stuff.