python也可以用来编写GUI程序且是跨平台的,既可以在windows平台运行也可以在linux平台运行,是不是很有吸引力。 在前面我写过一篇通过web界面与cgi脚本交互进而实现数据持久化的文章,这里我们依然用数据持久化的例子来写,但这里是用python代码来编写交互界面。 在我们开始前,请确保你已经安装了python-tkinter 模块依赖,否则以下代码将不能在你的机器上运行。 一、用到的相关控件 为了使程序尽量简单且功能完善,我们不会编写各种异处理常相关代码,我们以能说明问题为目的,所以这里用到的控件很简单,只有以下几个:Label、Entry、Button、Frame、Tk。 Label 用来标识显示或者更新的是哪一项; Entry 用来显示信息; Button 用来响应用户鼠标事件; Frame 用来布局; Tk是根组件,可以理解为一个window; 为了用这些组件,首先需要引入相关库,并定义一些全局变量,如下代码: from tkinter import *import pickle import osstudent_keys = ('name', 'gender', 'age', 'score')# 各项数据对应的widgetentries = {} 二、需要处理的事件 我们这里需要处理3个按钮事件,一个是加载数据事件,一个是更新数据事件,一个是退出程序事件。 加载数据事件代码如下:
更新数据事件代码如下: def save_student(): if os.path.exists('student.data'): with open('student.data', 'rb') as file: student = pickle.load(file) student = student or {} else: student = {} if not student: student = dict.fromkeys(student_keys, '') for key in student_keys: if key in entries and entries[key].get().strip(): student[key] = entries[key].get().strip() with open('student.data', 'wb') as file: pickle.dump(student, file) entries是个全局变量,保存着当前各项信息内容。 退出程序事件代码比较简单,调用根组件的quit方法就行,这里就不再单独写了,下面代码有写。 三、GUI 布局与交互 剩下的工作就是创建各个组件并布局以及注册各个事件了,如下代码:
四、验证程序的运行 程序启动后会创建一个窗口,如下截图: 程序启动界面 我们填入以下各项信息: 填入各项信息 这时点击'save’按钮就会触发save_student代码的执行,然后点击'quit’按钮退出程序。 当下次启动程序时点击'load’按钮就会触发load_student代码的执行,就能看到上面填入的各项信息了,可以自己动手试一下哦。 |
|