图形用户界�(GUI)常�问题¶
图形界�常�问题¶
Python 有哪些 GUI 工具包?¶
Python çš„æ ‡å‡†æž„å»ºåŒ…æ‹¬ä¸€ä¸ªæŒ‡å�‘ Tcl/Tk 部件集的é�¢å�‘对象的接å�£ï¼Œç§°ä¸º tkinter 。 è¿™å�¯èƒ½æ˜¯æœ€å®¹æ˜“å®‰è£…ï¼ˆå› ä¸ºå®ƒåŒ…å�«åœ¨å¤§å¤šæ•° Python çš„ 二进制å�‘行版 ä¸ï¼‰å’Œä½¿ç”¨çš„。关于 Tk 的更多信æ�¯ï¼ŒåŒ…括指å�‘æº�代ç �的信æ�¯ï¼Œè§� Tcl/Tk 主页 。 Tcl/Tk å�¯ä»¥å®Œå…¨ç§»æ¤�到 macOS ã€� Windows å’Œ Unix å¹³å�°ã€‚
å˜åœ¨å¤šç§�选项,具体å�–å†³äºŽä½ çš„ç›®æ ‡å¹³å�°ã€‚ Python Wiki 上æ��供了一个 跨平å�° å’Œ å¹³å�°ä¸“属 çš„ GUI 框架列表。
有关Tkinter的问题¶
æˆ‘æ€Žæ ·â€œå†»ç»“â€�Tkinter程åº�?¶
Freeze (æ„�为 “冻结â€�)是一个用æ�¥åˆ›å»ºç‹¬ç«‹åº”用程åº�的工具。 当 “冻结â€� Tkinter 程åº�时,程åº�å¹¶ä¸�是真的能够独立è¿�è¡Œï¼Œå› ä¸ºç¨‹åº�ä»�然需è¦� Tcl å’Œ Tk 库。
一�解决方案是将应用程�与 Tcl 和 Tk 库�一起�布,并在�行时使用 TCL_LIBRARY 和 TK_LIBRARY 环境��指�它们的�置。
为了获得真æ£èƒ½ç‹¬ç«‹è¿�行的应用程åº�,æ�¥è‡ªè¯¥åº“çš„ Tcl 脚本也需è¦�被整å�ˆè¿›åº”用程åº�。 一个å�šè¿™ç§�事情的工具å�« SAM (独立模å�—),它是 Tix 分å�‘版的一部分 (https://tix.sourceforge.net/)。
在å�¯ç”¨ SAM 的情况下构建 Tix,在 Python çš„ Modules/tkappinit.c 䏿£ç¡®æ‰§è¡Œå¯¹ Tclsam_init() ç‰å‡½æ•°çš„调用,并与 libtclsam å’Œ libtksam 相链接(å�¯èƒ½ä¹Ÿè¦�包括 Tix 库)。
在ç‰å¾… I/O æ“�作时能够处ç�† Tk 事件å�—?¶
在 Windows 以外的平å�°ä¸Šï¼Œä½ 甚至ä¸�需è¦�使用线程ï¼� 但您必须ç¨�å¾®è°ƒæ•´ä¸€ä¸‹ä½ çš„ I/O 代ç �。 Tk 有与 Xt çš„ XtAddInput() 对应的调用,它å…�è®¸ä½ æ³¨å†Œä¸€ä¸ªå›žè°ƒå‡½æ•°ï¼Œå½“å�¯ä»¥å¯¹ä¸€ä¸ªæ–‡ä»¶æ��述符进行 I/O æ“�作时,该函数将从 Tk 的主循环ä¸è¢«è°ƒç”¨ã€‚ å�‚è§� 文件处ç�†ç¨‹åº�。
在Tkinterä¸é”®ç»‘定ä¸�工作:为什么?¶
一个�常�到的抱怨是:已�通过 bind() 方法 绑定 到事件的事件处��柄在对应的键被按下时并没有被处�。
最常è§�çš„åŽŸå› æ˜¯ï¼Œé‚£ä¸ªç»‘å®šçš„æŽ§ä»¶æ²¡æœ‰â€œé”®ç›˜ç„¦ç‚¹â€�。请在 Tk æ–‡æ¡£ä¸æŸ¥æ‰¾ focus 指令。通常一个控件è¦�获得“键盘焦点â€�,需è¦�点击那个控件(而ä¸�æ˜¯æ ‡ç¾ï¼›è¯·æŸ¥çœ‹ takefocus 选项)。