2011-12-19 14 views
5

TL; DR: Czy istnieje biblioteka do deklaratywnego tworzenia interfejsu użytkownika za pomocą GTK? Preferrably with support Python.Declarative GTK


Jestem programistą Python/Django, większość z moich doświadczeń na temat interfejsów użytkownika jest z sieci, gdzie deklaratywne, luźno projekty UI są standardowe. Niedawno musiałem stworzyć aplikację GUI wykorzystującą Java/Swing dla projektu szkolnego i skończyłem używając SwiXML, aby utworzyć deklaratywne układy Swing dla projektu.

Zadałem sobie pytanie, czy istnieją podobne możliwości zastosowania w Pythonie. Nie przepadam za Javą, więc nie będę rozpoczynać programowania aplikacji Swing. Szukając Python GUI Toolkits, doszedłem do wniosku, że trzema głównymi graczami w tej dziedzinie są GTK, QT i Wx.

Z tych 3 wolałbym GTK, ale nie mogłem znaleźć żadnego sposobu na utworzenie deklaratywnego interfejsu użytkownika z GTK. Z mojego doświadczenia z HTML i SwiXML wynika, że ​​tworzenie kodu opartego na kodach jest ogromnym bałaganem i wolałbym nie robić tego w ten sposób. Deklaracyjny interfejs użytkownika jest znacznie bardziej elastyczny i bardziej luźno powiązany.

Czy istnieje biblioteka do deklaratywnego tworzenia interfejsu użytkownika za pomocą GTK? Preferrably with support Python.

Jeśli czegoś takiego nie ma (zakładam, że niczego nie mogłem znaleźć), mogę zacząć korzystać z QT, mimo że nie podoba mi się domyślny wygląd pod Linuksem . (Ale może to również można dostosować, w taki sposób, aby wyglądało podobnie do GTK.)

+1

http://www.clutter-project.org/ – kechapito

+0

Jakiś czas temu Qt zaczęło poprawnie naśladować motywy GTK na Linuksie. Więc nie ma już "domyślnego wyglądu". Istnieje również [Qt Quick] (https://qt.nokia.com/qtquick/) dla deklaratywnych interfejsów Qt. (dodając to jako komentarz, ponieważ pytanie było specjalnie ukierunkowane na GTK). –

+0

@marcushatchenson wow, to wygląda całkiem zgrabnie! –

Odpowiedz

12

Myślę, że to, czego szukasz, to gtk.Builder. Zasadniczo obiekty gtk.Builder można wykorzystać do załadowania pliku .ui, który zawiera dane XML, które opisują widgety interfejsu użytkownika i wywołania zwrotne zdarzeń, które powinny zostać ujawnione przez kod. Plik .ui można utworzyć za pomocą glade, więc nie musisz nawet sam pisać xml.

+0

Dziękuję, to wygląda na użyteczne. Polana wydaje się całkiem niezła. –

+1

Oto samouczek, który jest nieco przestarzały: http://www.micahcarrick.com/gtk-glade-tutorial-part-1.html –

0

Spójrz na enaml. Chociaż nie ma zestawu narzędzi GTK, jest to jedyna prawdziwie deklaratywna struktura dla Pythona, o której wiem.