Grafik Kullanıcı Arayüzü SSS

Genel GKA Soruları

Python için hangi GKA araç setleri var?

Python’un standart yapıları, tkinter adlı Tcl/Tk pencere öğesi kümesine yönelik nesne yönelimli bir arayüz içerir. Bu muhtemelen kurulumu ve kullanımı en kolay olanıdır (çünkü çoğu Python’ın ikili dağıtımlar kısmında bulunur) ve kullanılandır. Kaynak işaretçiler de dahil olmak üzere Tk hakkında daha fazla bilgi için Tcl/Tk ana sayfasına bakın. Tcl/Tk, macOS, Windows ve Unix platformlarına tamamen taşınabilir.

Hangi platformları hedeflediğinize bağlı olarak, birkaç alternatif de mevcuttur. Bir cross-platform listesi ve spesifik platform GKA çerçeveleri Python Wiki’de bulunabilir.

Tkinter soruları

Tkinter uygulamalarını nasıl dondurabilirim?

Dondurma işlemi, tek başına bağımsız uygulamalar oluşturmak için bir araçtır. Tkinter uygulamalarını dondururken, uygulama hala Tcl ve Tk kütüphanelerine ihtiyaç duyacağından, uygulamalar gerçekten bağımsız olmayacaktır.

One solution is to ship the application with the Tcl and Tk libraries, and point to them at run-time using the TCL_LIBRARY and TK_LIBRARY environment variables.

Gerçekten bağımsız uygulamalar elde etmek için kütüphaneyi oluşturan Tcl betiklerinin de uygulamaya entegre edilmesi gerekir. Bunu destekleyen araçlardan biri, Tix dağıtımının (http://tix.sourceforge.net/) ‘in bir parçası olan SAM’dir (bağımsız modüller).

Build Tix with SAM enabled, perform the appropriate call to Tclsam_init(), etc. inside Python’s Modules/tkappinit.c, and link with libtclsam and libtksam (you might include the Tix libraries as well).

G/Ç’yi beklerken Tk olaylarını işleyebilir miyim?

On platforms other than Windows, yes, and you don’t even need threads! But you’ll have to restructure your I/O code a bit. Tk has the equivalent of Xt’s XtAddInput() call, which allows you to register a callback function which will be called from the Tk mainloop when I/O is possible on a file descriptor. See File Handlers.

Tkinter’da çalışmak için anahtar bağlamalarını alamıyorum: neden?

An often-heard complaint is that event handlers bound to events with the bind() method don’t get handled even when the appropriate key is pressed.

En yaygın neden, bağlamanın uygulandığı pencere öğesinin “klavye odağına” sahip olmamasıdır. Focus komutu için Tk dokümantasyonuna bakın. Genellikle Wigdet’lara tıklanılarak klavye odağı verilir (ancak etiketler için değil; odak alma seçeneğine bakın).