【问题标题】:Is it possible to emulate Tk receive in tkinter?是否可以在 tkinter 中模拟 Tk 接收?
【发布时间】:2019-02-03 04:05:36
【问题描述】:

我有一个应用程序支持使用send 方法与其他Tk 应用程序通信。在 Tcl/Tk 中,通过从另一个 Tk 应用程序调用 send() 并指定接收应用程序,很容易在一个 Tk 应用程序中调用用户子例程和子程序nameargs。在 Perl 中,可以通过更多的工作来做同样的事情(覆盖 Tk::Receive 的定义,以处理来自另一个应用程序的 send 方法的传入消息)。

有人知道使用 tkinter 接收来自 Tk send 的外部消息吗?我想要一个在mainloop() 中被调用来处理传入消息的子例程。

【问题讨论】:

  • 我无法对此进行测试,但看起来您可以注册一个 Python 函数,以便通过 someWidget.tk.createcommand(name, func) 从 Tcl/Tk 端调用 - 如果 Tk send 机制是在您的平台上支持,那么您注册的名称应该是它的有效目标。

标签: python-3.x tkinter tk


【解决方案1】:

感谢@jasonharper,以下在 python 3.6 中有效:

from tkinter import *
root = Tk()

def some_func(*args):
    print("Got args: " + ",".join(args))

# Create a command called my_func that calls some_func
root.tk.createcommand("my_func", some_func)

root.mainloop()

例如如果我从另一个 Tk 应用程序执行 send tk my_func hey,假设默认的 tkinter 应用程序名称 tk,我会从上面的代码中看到 Got args: hey

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多