【问题标题】:How to emit events in tkinter?如何在 tkinter 中发出事件?
【发布时间】:2018-05-19 06:19:43
【问题描述】:

我有一个用 python3 和 tkinter 模块编写的简单应用程序。我想编写我的自定义小部件并需要发送我的自定义事件。

为什么下面的示例代码不起作用?

#!/usr/bin/env python3

from tkinter import *

class MyWidget(Listbox):
    def __init__(self, master, *args, **kwargs):
        super().__init__(master, *args, **kwargs)

        # ===================
        # error:  _tkinter.TclError: only one event specification allowed
        self.bind('<<ListboxSelect>>', lambda e: self.event_generate('MyEvent'))
        # ===================


class App(Tk):
    def __init__(self):
        super().__init__()
        w = MyWidget(self)
        w.bind('MyEvent', lambda e: print('It\'s working'))
        w.pack()

        w.insert(END, 'ddddddd')


if __name__ == '__main__':
    app = App()
    app.mainloop()

【问题讨论】:

    标签: python python-3.x tkinter tk


    【解决方案1】:

    虚拟事件需要被&lt;&lt;&gt;&gt; 包围。只需将'MyEvent' 替换为'&lt;&lt;MyEvent&gt;&gt;',您的自定义事件就可以工作了。

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多