图形用户界面事件驱动编程**GUI编程首先:设计界面外观用什么构件,怎么布局其次:实现界面元素所对应的程序功能事件驱动:功能代码的执行与构件关联,由针对构件的事件决定执行什么代码以及何时执行.**Tkinter事件描述事件描述"<修饰符-类型符-细节符>"类型符:指定事件类型,如Button和Key修饰符(可选):描述双击,组合键等细节符(可选):指定具体鼠标或键盘按键例如""**常用鼠标事件或或<1>:单击左键类似有和:按下左键并移动类似有和:双击左键和:鼠标指针进入/离开构件区域**常用键盘事件或a:按下字母a可打印字符都类似,但空格是,小于号是注意:1和<1>不同!:按下回车键非可打印字符都类似,如:,,,,,等:按下任意键:同时按下Shift和↑键类似的有Alt组合、Ctrl组合**事件对象每个事件都创建一个事件对象(Event类的实例),并将该对象传递给事件处理函数事件对象具有若干描述事件的属性:x和y:鼠标点击位置(相对于构件左上角)x_root和y_root:鼠标点击位置(相对于屏幕左上角)num:点击的鼠标键号(1、2、3)char:按下的字符(ASCII);如果按下特殊键则为空串keysym:按下的字符(ASCII);如果按下特殊键则为该键的名称(是个字符串)***事件处理GUI应用程序在建立图形界面等初始化工作后进入事件循环,等待事件发生并触发绑定的事件处理程序mainloop()方法:进入事件循环绑定:建立事件与事件处理程序间的对应***构件绑定事件语法:<构件实例>.bind(<事件描述符>,<事件处理程序>)语义:若针对<构件实例>发生了与<事件描述符>相匹配的事件,则调用<事件处理程序>调用事件处理程序时,系统传递Event对象作为实参.<事件处理程序>,而是由系统调用,一般称为回调(callback)函数GUI应用程序可封装为类,这时事件处理程序常定义为应用程序类的方法.(详后)***例:*defcallback(event):print"clickedat",,=Tk()f=Frame(root,width=100,height=100)("",callback)()()***例:按钮绑定键盘事件按键时,界面中哪个构件响应该键盘事件?,任何时刻只能有一个构件占有焦点,键盘事件总是发送到当前占有焦点的构件fromTkinterimport*defprintInfo(event):print"pressed",=Tk()b=Button(root,text='Pressanykey')('',printInfo)()()()
上海交通大学 python程序设计课程PPT Ch8-2 来自beplayapp体育下载www.apt-nc.com转载请标明出处.