19.6 练习

19-1.客户端/服务器架构。请描述窗口服务器的角色和窗口客户端的角色。

19-2.面向对象编程。请描述子窗口和父窗口的关系。

19-3.标签组件。请修改tkhellol.py脚本,让它显示你自定义的消息而非“Hello World”

19-4.标签和按钮组件。请修改tkhello3.py脚本,除了QUIT按钮以外再新增3个按钮。按下这3个按钮中的任意一个都将改变标签文字,显示被按下的按钮(组件)上的文字。

19-5.标签、按钮和单选按钮组件。请对你上一问题的答案作修改,用3个单选按钮实现对标签文字的选择。现在有两个按钮:QUIT按钮和“更新”按钮。当更新按钮被按下时,标签里的文字变成选中的单项按钮上的文字。如果没有选中任何单选按钮,则标签内容保持不变。

19-6.标签、按钮和文本框组件。请对你上一问题的答案作修改,用一个单行的文本框组件替换那3个单选按钮,文本框的默认值为“Hello World! ”(和标签的初始字符串保持一致)。用户可以编辑文本框,输入新的字符串,标签组件会在更新按钮被按下时显示这个新的字符串。

19-7.标签、文本框组件及Python I/O。创建包含一个文本框的GUI程序,用户可以在其中输入一个文本文件名。打开该文件并读取,把其中的内容显示在标签组件上。附加题(菜单):把文本框换成一个包含文件打开选项的菜单,它会弹出一个窗口供用户选择要读取的文件。再给菜单加上一个Exit或Quit选项,这样就用不着QUIT按钮了。

19-8.简单的文本编辑器。在你上一题答案的基础上创建一个简单的文本编辑器。可以用剪贴板或读文件的方式在一个文本域里显示一些文字供用户编辑。当用户退出程序时(通过QUIT按钮或Quit/Exit菜单项)会询问用户是否保存所作的修改。附加题:给你的脚本添加一个拼写检查接口,增加一个按钮或菜单项来对文件进行拼写检查。拼写错误的词句应在文本域组件中用不同的背景或前景色高亮显示出来。

19-9.多线程聊天应用程序。第13、16、17章讲到的聊天程序可以完成了。创建一个全功能的多线程聊天服务器。这个服务器其实并不需要有GUI,除非你想给它创建一个前端配置界面,配置端口号、名称、到域名服务器的连接等。创建一个多线程的聊天客户端,使用单独的线程监视用户输入(并以广播方式给服务器发送消息),另一个线程用来接收消息并显示给用户。客户端的GUI聊天窗口应当由两部分组成:较大的部分用来多行显示所有的对话,较小的文本域用来接收用户输入。

19-10.使用其他GUI。19. 4中的例子使用到了各种各样的工具集,这些GUI程序看起来很相似;然而,它们并不完全一样。尽管不可能让所有的例子看起来完全一样,但请尽量调整它们,让它们比现在看起来更一致些。

19-11.使用GUI构建工具。下载Boa Constructor(wxWidgets平台)或Glade (GTK+平台)(或者都下载),然后实现那个“动物” GUI程序,只用从相应的工具栏拖曳一些组件就好了。给你的新GUI加上回调函数,让它能有本章例子程序中的那些行为。