bootstrap 单选按钮点击change事件 只触发一次_TKinter教程-事件处理

TKinter提供两种方法实现事件的绑定:使用command属性绑定事件处理函数,使用bind方法绑定事件处理函数!

b3c46b39c0de482cb0302f283528ea78

Tkinter事件绑定

Tkinter事件处理

TKinter提供两种方法实现事件的绑定

  • 通过command属性绑定事件处理函数
  • 通过bind方法绑定事件处理函数

通过command属性绑定事件处理函数

事件处理可通过组件对象的command属性实现,该对象command属性需要绑定一个事件处理函数,当用户有点击事件时,会触发command绑定的事件处理函数执行。

对应示例使用

# -*- coding:utf-8 -*-from tkinter import Tk, Label, Buttonimport randomclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): self.label = Label(self.mw, width=45) self.label['font'] = ('arial', 24) self.label['bg'] = '#326191' self.label['text'] = u'欢迎访问雷那网,一个有温度的Python兴趣屋' self.label.pack() # button按钮绑定事件函数 bn = Button(self.mw, text='改变内容', command=self.change) bn.pack() def change(self): """定义button事件处理函数""" msgs =[u'欢迎访问雷那网,一个有温度的Python兴趣屋',u'这里有Python教程',u'这里有网络爬虫教程',u'Python自动化测试工具使用'] self.label['text'] = msgs[random.randint(0, 3)]if __name__ == "__main__": mw = Tk() mw.title("TKinter事件处理") App(mw) mw.mainloop()

代码运行以后,点击改变内容,界面Label上的文本内容会发生变化

通过bind方法绑定事件处理函数

使用command属性绑定事件处理函数,有一定局限性:不能就具体事件(单击,双击、左击,还是具体按键事件)做出不同事件处理

这对这个问题,TKinter提供了bind() 方法,且所有组件都支持该方法,通过该方法可以将“任意” 事件绑定指定事件处理方法

# -*- coding:utf-8 -*-from tkinter import Tk, Label, Button,BOTH,YESimport randomclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): self.Label = Label(self.mw, width=30, bg='#326191', font=('Arial', 24)) self.Label.pack() bn = Button(self.mw, text='请单击或双击') bn.pack(fill=BOTH, expand=YES) # 为单击事件绑定处理函数 bn.bind('', self.one) # 为双击事件绑定处理函数 bn.bind('', self.double) def one(self, event): self.Label['text'] = u"单击事件"  def double(self, event): self.Label['text'] = u"双击事件"if __name__ == "__main__": mw = Tk() mw.title("TKinter事件处理") App(mw) mw.mainloop()

鼠标事件&按键事件

Tkinter 使用字符串表示鼠标按键事件,如 表示鼠标左键单击事件, 表示鼠标左键双击事件

Tkinter 响应事件包括:

  • 鼠标单击事件
  • 单击鼠标左键为
  • 单击鼠标中键为
  • 单击鼠标右键为
  • 单击向上滚动的滚轮为
  • 单击向下滚动的滚轮为
  • 鼠标移动事件
  • 按住鼠标左键移动为
  • 锁住鼠杯中键移动为
  • 按住鼠标右键移动为
  • 鼠标释放事件
  • 鼠标左键被释放为
  • 鼠标中键被释放为
  • 鼠标右键被释放为
  • 鼠标双击事件 或
  • 双击鼠标左键为
  • 双击鼠标中键为
  • 双击鼠标右键为
  • 双击向上滚动的滚轮为
  • 双击向下滚动的滚轮为
  • 鼠标进入组件事件
  • 鼠标移出组件事件
  • 组件及其包含的子组件获得焦点
  • 组件及其包含的子组件失去焦点
  • 按下回车键的事件
  • Cancel
  • BackSpace
  • Tab
  • Return
  • Shift_L(左Shift,如果只写 Shift 则代表任意 Shift)
  • Control_L(左 Ctrl,如果只写 Control 则代表任意 Ctrl)
  • Alt_L(左 Alt,如果只写 Alt 则代表任意 Alt)
  • Pause
  • Caps_Lock
  • Escape
  • Prior(Page Up)
  • Next(Page Down)
  • End、Home
  • Left、Up、Right、Down
  • Print
  • Insert
  • Delete
  • F1、F2、F3、F4、F5、F6、F7、F8、F9、F10、F11、F12
  • Num_Lock 和 Scroll_Lock
  • 键盘上任意键的单击事件,程序可通过 event 获取用户单击了哪个键
  • a 键盘上指定键被单击的事件。比如‘a’代表 a 键被单击,‘b’代表 b 键被单击,不要尖括号
  • 在 Shift 键被按下时按 Up 键
  • 组件大小、位置改变的事件。组件改变之后的大小、位置可通过 event 的 width、height、x、y属性获取

鼠标移动事件绑定使用示例

# -*- coding:utf-8 -*-from tkinter import Tk, Label, Button,BOTH,YESimport randomclass App(object): def __init__(self, mw): self.mw = mw self.initWidgets() def initWidgets(self): lb = Label(self.mw, width=40, height=3, bg='green', font=('Times', 20)) # 为鼠标移动绑定事件处理方法 lb.bind('', self.motion) # 为按住左键时的鼠标移动绑定事件处理方法 lb.bind('', self.press_motion) lb.pack() self.show = Label(self.mw, width=38, height=1, bg='white', font=('Courier New', 20)) self.show.pack() def motion(self, event): self.show['text'] = "鼠标移动到: (%s %s)" % (event.x, event.y) return def press_motion(self, event): self.show['text'] = "按住鼠标的位置为: (%s %s)" % (event.x, event.y) returnif __name__ == "__main__": mw = Tk() mw.title("鼠标移动事件") App(mw) mw.mainloop()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值