shabum 发表于 2020-8-1 21:14:01

我有点不太理解event.widget["text"] 这个是什么意思

from tkinter import *
class App:
    def __init__(self,master):
      self.master = master
      self.initWidgets()
    def initWidgets(self):
      self.show = Label(self.master,width=30,bg="white",font=("times",30))
      self.show.pack()
      bn = Button(self.master,text="单击我或双击我")
      bn.pack(fill=BOTH,expand=YES)
      #为左键单击事件绑定处理方法
      bn.bind("<Button-1>",self.one)
      #为左键双击事件绑定处理方法
      bn.bind("<Double-1>",self.double)
    def one(self,event):
      self.show["text"] ="左键单击:%s" % event.widget["text"]
    def double(self,event):
      print("左键双击,退出程序:",event.widget["text"])
      import sys;sys.exit()
root =Tk()
root.title("简单绑定")
App(root)
root.mainloop()

现在我不懂一个是event 有什么用而event.widget 这个是用来做什么的?麻烦解答一下。{:10_266:}

Twilight6 发表于 2020-8-1 21:28:28

本帖最后由 Twilight6 于 2020-8-1 21:30 编辑



event是触发事件时候自动传入的一个参数,就是指代这个事件,而这个参数里面包括你点击了什么键位,鼠标位置啥的各种参数

widget 就是指被触发事件的组件名,而 widget['text'] 就是将这个组件的 text 参数读取出来

比如说你这里设置的触发事件时候组件名位 Button ,所以这里 widget['text'] 就是读取 Button 里面的text 参数的值

所以这里的 event.widget 就是获取触发事件的组件名,然后 ['text'] 就是读取该组件的 text 的值

sunrise085 发表于 2020-8-1 21:29:20

通过bind绑定的处理函数,会有一个参数event就是事件本身,具体到你这个程序就是"<Button-1>"或者"<Double-1>",event.widget就是通过事件获取改时间所对应的控件,在你的程序中也就是获取控件bn,然后就可以通过["属性"]来获取控件的相关属性了,例如你的程序中获取的是按钮bn的text属性
页: [1]
查看完整版本: 我有点不太理解event.widget["text"] 这个是什么意思