Tkinter 将带参数的函数绑定到小部件

2023-12-09

我有一个 tkinter 框架和一个附加到它的按钮:

from tkinter import *

def rand_func(a,b,c,effects):
    print (a+b+c)

root=Tk()
frame=Frame(root)
frame.bind("<Return>",lambda a=10, b=20, c=30: rand_func(a,b,c))
frame.pack()

button=Button(frame, text="click me", command=lambda a=1,b=2,c=3,eff=None:rand_func(a,b,c))
button.pack()

root.mainloop()

我希望当用户按下 Enter 和按下按钮时完成相同的功能。遗憾的是,上面的代码在框架绑定时给出了错误。有谁知道这个问题的解决方案?


当您创建绑定时bind,Tkinter 自动添加一个包含事件信息的参数。您需要在您的rand_func定义或你如何称呼它。

这个论点是not当您使用时包括command属性。您必须在每种情况下如何调用函数或函数如何解释其参数时小心考虑此额外参数。

这是一种使用的解决方案lambda仅在使用时才在绑定中接受额外的事件bind命令,但不将其传递给最终命令。

import tkinter as tk

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.frame = tk.Frame(self)
        self.frame.pack()
        self.button = tk.Button(self.frame, text="click me",
                             command=lambda a=1, b=2, c=3: 
                                self.rand_func(a, b, c))
        self.button.pack()
        self.frame.bind("<Return>", 
                        lambda event, a=10, b=20, c=30: 
                            self.rand_func(a, b, c))
        # make sure the frame has focus so the binding will work
        self.frame.focus_set()

    def rand_func(self, a, b, c):
        print "self:", self, "a:", a, "b:", b, "c:", c
        print (a+b+c)

app = SampleApp()
app.mainloop()

话虽如此,绑定到框架很少是正确的做法。通常,框架不会有键盘焦点,除非它有焦点,否则绑定永远不会触发。如果您要设置全局绑定,您应该绑定到“all”绑定标签(使用bind_all方法)或顶级小部件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tkinter 将带参数的函数绑定到小部件 的相关文章

随机推荐

  • 如何在 R 中为 dist 函数指定其他方法?

    在 R 中 dist 函数的文档中有以下内容 method 要使用的距离测量 这必须是 euclidean maximum manhattan canberra binary 或 minkowski 之一 可以给出任何明确的子字符串 但我需
  • 如何删除 woocommerce 添加的购物车项目并重定向到结帐?

    我有一个用于 添加资金 的 Woocommerce 表格 它有一个金额输入字段 20 美元 30 美元 等 和一个提交按钮 该按钮重定向到购物车页面 其中输入的金额为总计 重定向到结账正常 但如果用户放弃购物车并尝试再次订购 则购物车商品不
  • 移动圆弧上出现半径线

    我试图创建这些移动的形状 该形状由半圆形和对称的上弧和下弧组成 它们应该只是前面的形状 但现在当它们移动时 后面会拖着一条像尾巴一样的线 尾部未知的输出形状 这些线似乎来自上下弧的 moveTo 部分 但我不知道如何解决它 我应该在哪里改变
  • 在 WPF 中将像素转换为 CM

    I have New System Windows LengthConverter ConvertFrom 1cm 37 795275590551178 Double Double 37 795275590551178 So in 1cm
  • 我们如何使用资产目录颜色集?

    我通常使用 Swift 扩展在 iOS 上使用自定义 UIColor 但现在使用 iOS 11 Xcode 9 我们可以创建颜色集 我们如何使用它们 更新 提示 正如 C ur 所说 我们可以拖放颜色 并将其用作 UIColor 对象 可能
  • 在 Cordova 插件中使用 iBeacons,即在活动/服务之外

    我正在尝试编写一个 Cordova 插件 它与 Android 的 Radius Networks iBeacon 库进行交互 现在 我知道该库是为与活动 服务一起使用而设计的 但这在我的情况下不起作用 因此我正在尝试根据文档尽可能地调整它
  • C# 解析文本文件并将值存储在数组中

    我正在尝试将具有以下格式的文本文件读入数组 Previous errors were for Test id 1234567 Error id 12345678 Previous errors were for Test id 123456
  • 如何清除实体框架中跟踪的实体

    我正在运行一些在一大堆实体上运行的修正代码 随着它的进展 速度会降低 这是因为上下文中跟踪的实体数量随着每次迭代而增加 这可能需要很长时间 所以我在最后保存更改每次迭代的 每次迭代都是独立的 不会更改先前加载的实体 我知道我可以关闭更改跟踪
  • 从 C# 调用托管 C# COM 对象

    我正在尝试从 C 调用 C COM 对象 我用 C 创建了一个类库 并使用 tlbexe exe 导出了一个类型库 然后我使用 regtlibv12 exe 注册了类型库 但是 当我在 Visual Studio 中添加对 COM 对象的引
  • 使用 array_search 进行多维数组

    在一维数组中使用 array search 很简单 array array apple banana cherry searchValue cherry key array search searchValue array echo key
  • 如何在R编程中读取和解码二维码图像? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 如何在R编程中读取和解码二维码图像 我想将带有二维码的图像转换为文本 R 有用于生成 QR 码的库 如 package qrcode 和 packa
  • eclipse 中junit 的等宽字体?

    如何更改 JUnit 选项卡中的字体 以便它使用等宽字体显示结果 我正在使用 Groovy 我找到了解决方案here 您需要转到 Groovy gt Preferences 并选中使用等宽字体复选框
  • ag-grid v 22.1.1 升级后 ng build --prod 失败

    我已经开始使用ag grid从版本 18 开始 目前为 20 0 0 我正在升级到最新版本 22 1 1 解决由于重大更改而导致的警告 错误后 一切 包括 ng服务 都工作正常 但是 当我尝试在产品模式下构建角度应用程序时 它失败了 app
  • x86-64:规范地址和实际可用范围

    Intel 和 AMD 文档称 对于 64 位模式 实际上只有 48 位可用于虚拟地址 并且从 48 到 63 的位必须复制位 47 符号扩展 据我所知 当前所有的CPU都是以这种方式实现的 但是 理论上 没有什么禁止在未来的实现中扩展可用
  • 如何将jsPDF转换后的pdf文件发送到后端服务器?

    我需要将 png 文件发送到后端服务器 我使用 jsPDF 将其转换为 pdf var doc new jsPDF l mm 210 210 doc addImage myPngData PNG 0 0 210 210 现在我需要使用我的老
  • 如何阅读“fetch(PDO::FETCH_ASSOC);”

    我正在尝试使用 PHP 构建一个 Web 应用程序 并且我正在使用内存缓存用于存储数据库中的用户数据 例如 假设我有以下代码 sql SELECT FROM users WHERE user id user id stmt this gt
  • 从元模型强制执行单个实例

    我知道从类级别确保单个实例要容易得多 而且有很好的StaticishJonathan Stowe 的模块通过使用角色来执行相同的操作 但我只是想尝试更好地理解如何阶级高阶工作可以处理 主要是针对FOSDEM的讲 我可以想到在元模型级别上执行
  • 如何手动轮换 log4j 日志

    我将 log4j 配置为每天轮换日志 在特殊情况下 我想手动触发额外的日志轮换 这可能吗 如果可能的话 如何实现 像这样解决 void rolloverLogs for final Enumeration appenders logger
  • 使用 php-imagick api 将 PDF 转为图像

    我想将 PDF 转换为图像 但是当输出图像生成时 它会比原始图像变得模糊 这是代码 uploadfile pdf 53 img new Imagick uploadfile img gt setResolution 300 300 img
  • Tkinter 将带参数的函数绑定到小部件

    我有一个 tkinter 框架和一个附加到它的按钮 from tkinter import def rand func a b c effects print a b c root Tk frame Frame root frame bin