Tkinter 按钮鼠标右键和左键单击有不同的命令

2024-05-11

我正在用 Python 制作扫雷游戏,并使用 tkinter 库来创建 gui。有没有 绑定到 tkinter 按钮两个命令的方法,一个是右键单击按钮时的命令,另一个是单击左键时的命令?


通常,按钮仅设计用于单击,但 tkinter 允许您为任何小部件的几乎任何事件添加绑定。如果您正在构建扫雷游戏,您可能不想使用Button小部件,因为按钮具有您可能不想要的内置行为。

相反,您可以使用Label, Frame, or a Canvas项目相当容易。主要困难是右键单击可能在不同平台上意味着不同的事件。对于某些人来说是<Button-2>对某些人来说<Button-3>.

这是一个使用框架而不是按钮的简单示例。左键单击框架会将其变为绿色,右键单击将其变为红色。此示例也可以使用按钮,但其行为会有所不同,因为按钮具有左键单击的内置行为,而框架和其他一些小部件则没有。

import tkinter as tk

def left_click(event):
    event.widget.configure(bg="green")

def right_click(event):
    event.widget.configure(bg="red")

root = tk.Tk()
button = tk.Frame(root, width=20, height=20, background="gray")
button.pack(padx=20, pady=20)

button.bind("<Button-1>", left_click)
button.bind("<Button-2>", right_click)
button.bind("<Button-3>", right_click)

root.mainloop()

或者,您可以绑定到<Button>, <ButtonPress>, or <ButtonRelease>,无论单击哪个鼠标按钮都会触发。然后您可以检查num传入事件对象的参数来确定单击了哪个按钮。

def any_click(event):
    print(f"you clicked button {event.num}")
...
button.bind("<Button>", any_click)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tkinter 按钮鼠标右键和左键单击有不同的命令 的相关文章

随机推荐

  • 如何列出静态链接的 python 版本中可用的所有 openssl 密码?

    在python 2 7 8到2 7 9升级中 ssl模块从使用更改为 DEFAULT CIPHERS DEFAULT aNULL eNULL LOW EXPORT SSLv2 to DEFAULT CIPHERS ECDH AESGCM D
  • R 在读取文件时添加额外的数字

    我一直在尝试读取一个包含日期字段和数字字段的文件 我的数据在 Excel 工作表中 如下所示 Date X 1 25 2008 0 0023456 12 23 2008 0 001987 当我在 R 中使用readxl read xlsx函
  • 根据复选框显示/隐藏输入字段[重复]

    这个问题在这里已经有答案了 如果单击该复选框 它将显示一个输入字段 到目前为止它正在工作 但如果未选中该复选框 它应该隐藏它 我该怎么做 div class checkbox div
  • Windows Phone 自定义着色器错误?

    在 Windows Phone XNA 4 0 中 我在编译时收到以下错误 Windows Phone平台不支持自定义着色器 这真的很烦人 因为我有一个 Xbox 360 版本的项目 还有一个 Windows 版本的项目 我尝试使用基于编译
  • Flutter MacOs 访问文件

    我正在尝试在 Flutter 中构建一个自定义桌面应用程序 以便能够加载图片 例如图库 为此 我将要求用户选择一个文件夹 它会自动显示图片 现在 从简单的事情开始 由于这是第一次为 Mac 开发 我只是尝试通过Image file new
  • 在单独的模块中使用 Spring AOP 方面

    我在一个 Maven 项目模块中有一个方面 com x NiceAspect 在一个单独的 Maven 模块中有一个类 com x NiceClass 这些模块具有相同的 POM 父级 共同创建一个项目 我想要实现的目标是拥有一个通用的方面
  • 带有可点击区域的 Android 图像

    我需要建议如何在 Android 下实现以下功能 我需要一个表示类似于图形 来自离散数学 的图像 具有顶点和边缘 我可以在其中单击每个顶点或边缘并触发不同的操作 请告诉我如何实现这一目标 也许与imagebuttons 或另一种表示此功能的
  • 如何在 Vagrant 中与 VirtualBox 启用双向文件夹同步?

    我已经有一段时间没有在 Linux 上使用 Vagrant 了 当我开始使用新版本 Vagrant 1 8 时 我遇到了一个问题 在来宾虚拟机中创建的文件没有出现在主机的同步文件夹中 如何强制 Vagrant 将文件从来宾操作系统同步到主机
  • 如何求解:T(n) = T(n - 1) + n

    我已经解决了以下问题 T n T n 1 n O n 2 现在 当我解决这个问题时 我发现界限非常松散 我是否做错了什么 或者只是这样 您还需要一个递归关系的基本情况 T 1 c T n T n 1 n 为了解决这个问题 您可以首先猜测一个
  • 将旧锚链接重定向到新锚链接

    我正在彻底修改其他人为我的组织构建的网站 它最初设置为 不太好 的锚链接 其中包含空格 我已经用效果更好的新锚替换了这些锚 例子 其中一位老主播看起来像这样 course To Have哪些浏览器会幸运地转换为 course To 20Ha
  • 为什么 UDP 服务器中只有一个套接字?

    我正在准备考试 发现了这个问题 典型的 UDP 服务器可以使用单个套接字来实现 解释一下为什么 对于 TCP 驱动的服务器 我发现创建了两个套接字 一个用于所有客户端访问服务器 另一个用于每个客户端的特定 套接字 用于服务器和客户端之间的进
  • 有没有办法将 Vite 与 HMR 一起使用并仍然在 /dist 文件夹中生成文件?

    首先 我想说 我已经开始使用 Vite 有一段时间了 而且我不是任何形式的 Vite 专家 现在 关于我的问题 我正在开发一个 Chrome 扩展 它要求我在 dist文件夹 使用起来效果很好vite build 但是 如果我尝试只使用vi
  • Dart:未为类型“对象”定义运算符“[]”?功能()'。尝试定义运算符“[]”

    我正在创建一个 Flutter 应用程序 但在实现 Firebase 时陷入困境 enter return Container child StreamBuilder
  • 头文件中实现的函数的静态与内联

    我想到的方式inline在 C 中用于链接 作用域 我把它放在同一个篮子里extern and static对于全局对象 通常 对于在头文件中实现的函数 我的首选解决方案是将其设为静态 In Foo h static void foo Do
  • 如何在 iPython 中获取最后分配的变量的值?

    我是一个完全的 iPython 新手 但我想知道是否有办法获取最后分配的变量的值 In 1 long variable name 333 In 2
  • 将 foreach 与 SplFixedArray 结合使用

    看来我无法通过引用迭代 SplFixedArray 中的值 spl new SplFixedArray 10 foreach spl as value value string var dump spl Outputs Fatal erro
  • 启动 jQuery UI 选项卡,没有选项卡处于活动状态且所有面板都隐藏

    我在用着jQuery UI 选项卡 http jqueryui com tabs 在一个项目中 我想知道是否有一种简单的方法可以在文档加载时隐藏所有面板 直到单击选项卡为止 默认情况下 jQuery UI 以激活的选项卡和可见的相应面板开始
  • SQL Not Empty 代替 Not NULL

    我正在使用 postgreSQL 我有一个专栏 NOT NULL 但是 当我想插入带有空字符串的行时 如下所示 它不会给我错误并接受 我如何检查插入值应该是not empty 既不为空也不为空 PS 我的专栏定义为 ads characte
  • Mysql 连接到服务器:用户 root@localhost 的访问被拒绝

    edit9 是否有可能我只是缺少文件夹的一些权限 我真的非常非常感谢更多的建议 edit3 由于这篇文章没有得到足够的回复 而且这绝对是至关重要的 我尽快完成这件事 我重建了我的帖子以显示我认为到目前为止我已经扣除的内容 注意 通过许多不同
  • Tkinter 按钮鼠标右键和左键单击有不同的命令

    我正在用 Python 制作扫雷游戏 并使用 tkinter 库来创建 gui 有没有 绑定到 tkinter 按钮两个命令的方法 一个是右键单击按钮时的命令 另一个是单击左键时的命令 通常 按钮仅设计用于单击 但 tkinter 允许您为