添加带有多个小部件链接的右键单击上下文菜单?

2024-04-14

我的问题是一种后续行动这个问题 https://stackoverflow.com/questions/12014210/python-tkinter-app-adding-a-right-click-context-menu/23834156#23834156

我想获取已右键单击的小部件以对其执行操作。

状况 :

  1. 右键单击“我的标签2”
  2. 选择“显示标签”

预期成绩 :

=> 应打印“我的标签 2”

初始解决代码:

from Tkinter import * # Tkinter -> tkinter in Python 3

root = Tk()

def print_label():
    print "Please, help me to print the label which has been clicked !"

def popup(event):
    menu.post(event.x_root, event.y_root)


# create a popup menu
menu = Menu(root, tearoff=0)
menu.add_command(label="Display the label", command=print_label)


# create the 3 labels
label1_text=StringVar()
label2_text=StringVar()
label3_text=StringVar()

label1_text.set("my label 1")
label2_text.set("my label 2")
label3_text.set("my label 3")

label1=Label(root, textvariable=label1_text)
label2=Label(root, textvariable=label2_text)
label3=Label(root, textvariable=label3_text)

label1.pack()
label2.pack()
label3.pack()

# attach popup to frame
label1.bind("<Button-3>", popup)
label2.bind("<Button-3>", popup)
label3.bind("<Button-3>", popup)

root.mainloop()

对当前代码进行尽可能少的更改,您需要做三件事:

  1. 创建一个全局变量来保存对当前选定标签的引用。

  2. Inside popup,将此变量设置为event.widget,这将是当前选定的标签。

  3. Inside print_label,通过访问其打印该标签的文本"text" key.

以下是您的程序的固定版本。我修改的内容在评论区:

from Tkinter import * # Tkinter -> tkinter in Python 3

root = Tk()

#############################################################
selected = None  # This is the variable mentioned in step 1

def print_label():
    print selected["text"]  # This is step 3

def popup(event):
    global selected  # Tell Python that selected is global

    menu.post(event.x_root, event.y_root)

    selected = event.widget  # This is step 2
#############################################################

# create a popup menu
menu = Menu(root, tearoff=0)
menu.add_command(label="Display the label", command=print_label)


# create the 3 labels
label1_text=StringVar()
label2_text=StringVar()
label3_text=StringVar()

label1_text.set("my label 1")
label2_text.set("my label 2")
label3_text.set("my label 3")

label1=Label(root, textvariable=label1_text)
label2=Label(root, textvariable=label2_text)
label3=Label(root, textvariable=label3_text)

label1.pack()
label2.pack()
label3.pack()

# attach popup to frame
label1.bind("<Button-3>", popup)
label2.bind("<Button-3>", popup)
label3.bind("<Button-3>", popup)

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

添加带有多个小部件链接的右键单击上下文菜单? 的相关文章

  • 什么时候在Python中使用弱引用?

    谁能解释一下弱引用的用法吗 The 文档 http docs python org library weakref html没有具体解释 只是说GC可以随时销毁通过弱引用链接到的对象 那么拥有一个随时可能消失的物体还有什么意义呢 如果我需要
  • Django:NoReverseMatch at /'myapp'不是注册的命名空间

    我在模板渲染期间遇到此错误 我想做的是允许用户上传 csv 然后将数据处理到模型中 第 109 行出错 myapp 不是已注册的命名空间 这是我的第 109 行代码
  • Django 1.6:清除一张表中的数据

    我有一个名为 UGC 的表 想要清除该表中的所有数据 我不想重置整个应用程序 这也会删除所有其他模型中的所有数据 是否可以只清除一个模型 我还为我的应用程序配置了 South 如果这有帮助的话 你可以使用原始 SQL https docs
  • 从networkx中的文件中读取具有pos属性的节点

    我是 Networkx 的新手 我有一个包含以下格式的节点位置的文件 0 23 23 12 23 where 0是一个节点 23 23 and 12 23分别是X和Y坐标 有谁知道如何读取节点pos属性 使用类似的函数read edgeli
  • pandas 读取列中带有额外逗号的 csv

    我正在阅读一个基本的 csv 文件 其中各列用逗号分隔 列名称如下 userid username body 但是 正文列是一个可能包含逗号的字符串 显然这会导致一个问题 pandas 会抛出一个错误 CParserError Error
  • 如何在redis中使用python删除排序集中的项目

    如何使用 python 删除排序集中大于某个值的项目 key foo pipe redis master conn pipeline pipe zadd key 1 a pipe zadd key 2 b pipe zadd key 3 c
  • 如何创建像Foursquare兴趣选择屏幕一样的gridview?

    我正在创建一个应用程序 要求用户选择多个兴趣 我正在尝试创建一个类似于 Foursquare 兴趣选择的屏幕类似于标签云其中可以选择多个按钮来代表用户的兴趣 我尝试创建一个 gridview 但无法实现按钮换行到下一行的效果 有没有办法通过
  • 我如何知道Python的unicode函数识别的所有支持的编码

    Python 有一个unicode将字节流转换为 unicode 字符串的内置函数 我只是希望我能查询所有可用的encoding在我的系统上 但如何 这个问题的原因是 有人使用 MAC OS X 向我发送了一封内容编码为 iso 2022
  • 使用 cx_oracle 返回 MERGE 中受影响的行数

    如何在 CX Oracle 中执行 MERGE INTO sql 命令来获取受影响的行数 当我在cx oracle 上执行MERGE SQL 时 我得到的cursor rowcount 为 1 有没有办法获取受合并影响的行数 由于 cx o
  • 如何在 Google App Engine (Python) 中定义配置变量/常量?

    我是 python GAE 的新手 想知道如何快速定义和使用全局设置变量 所以说你 git 克隆我的 GAE 应用程序 然后打开config yaml 添加更改设置 应用程序就全部连接起来 如下所示 config yaml or whate
  • 如何向 Jupyter (ipython) 笔记本自动添加扩展?

    我已经安装了扩展 calico document tools 我可以使用以下命令从 Jupyter 笔记本中加载它 javascript IPython load extensions calico document tools 如何为每个
  • dask分布式内存错误

    在分布式作业上运行 Dask 时 我在调度程序上遇到以下错误 distributed core ERROR Traceback most recent call last File usr local lib python3 4 dist
  • 识别文本中的多个类别和相关情感

    如果您有一个文本语料库 如何识别所有类别 来自预定义类别列表 以及与之相关的情绪 正面 负面写作 我将在 Python 中执行此操作 但现阶段我不一定要寻找特定于语言的解决方案 让我们用一个例子来看看这个问题 试图澄清我的问题 如果我有一整
  • 构建wheel失败/“错误:INCLUDE环境变量为空”

    我正在使用 Python 2 7 11 并尝试 pip install 模块 但是其中一些模块失败了 我收到的消息是 无法为 X 构建轮子 和 错误 包含环境变量为空 我尝试安装 Scrapy LXML 和 Twisted 但都失败了 我尝
  • 抓取 Shopee API v4

    我有一个最终项目 其中我想要检索的数据是通过在shopee上抓取数据来获取的 但是当我在隐藏的API上抓取shopee时遇到问题 当我在Insomnia脚本上尝试时 脚本会运行 但是当我尝试时在本地或 google colab 脚本上 这是
  • matplotlib 后端 - 我关心吗?

    gt gt gt import matplotlib gt gt gt print matplotlib rcsetup all backends u GTK u GTKAgg u GTKCairo u MacOSX u Qt4Agg u
  • 如何让 Python 生成器返回 None 而不是 StopIteration?

    我使用生成器在列表中执行搜索 如下简单示例 gt gt gt a 1 2 3 4 gt gt gt i for i v in enumerate a if v 4 next 3 只是为了稍微说明一下示例 与上面的列表相比 我使用的列表要长得
  • Python pandas:向我的数据框中添加一列来计算变量

    我有一个像这样的数据框 gt org group org1 1 org2 1 org3 2 org4 3 org5 3 org6 3 我想将列 count 添加到 gt 数据帧以计算组的成员数量 预期结果如下 org group count
  • Python - 将列表作为参数传递给 SQL,以及更多变量

    我试图在 python 3 6 中将未知数量的参数传递给 SQL Server 这是我使用 pypyodbc 的代码 cursor cnxn cursor theargs 1033286869 1053474957 1063654630 1
  • 获取 Flask 中没有端口的请求主机名

    我刚刚设法使用 Flask 获取我的应用程序服务器主机名request host and request url root 但这两个字段都返回请求主机名及其端口 我想使用仅返回请求主机名的字段 方法 而无需进行字符串替换 如果有 没有 We

随机推荐

  • 如何从 YouTube URL 获取 flv 文件路径

    我有一个 SWF 媒体播放器 播放 flv 视频 但我想让它播放 youtube 视频 所以我必须传递给播放器flv文件路径 该场景是一个我可以上传视频或输入网址的网站 我可以输入 YouTube 视频 URL 我正在使用 ASP NET
  • 如何加载图像以在 RCP 中查看?

    我正在开发一个RCP plugin project其中包括某些视图 第一个视图 员工详细信息 例如name address等等 有一个选项可以使用浏览按钮上传员工图像 第二个视图显示在第一个视图中输入的详细信息 除照片之外的所有详细信息都显
  • GitHub Actions - 如何在子目录中构建项目

    我正在使用 GitHub Actions 构建我的项目 但我的 Dart 项目位于存储库的子目录中 动作脚本找不到我的pubspec yaml并获取依赖项 如何指向我的 GitHub Action 在我的存储库的子目录中查找源代码 root
  • 如何使用 javascript 更改 div 内的 HTML 代码? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在构建一个 HTML 网站 该网站的页面太多 所以我想要一个代码 以便我可以从我的网站编辑特定的 div 以便它将应用于我的网站中的所
  • WPF 和 MVVM:保存 ScrollViewer 位置并在重新加载时设置

    我有一个 StackPannel 的 ScrollViewer 用户希望保存 ScrollViewer 的位置 以便当应用程序重新加载其数据时 StackPannel 将显示他们之前查看的项目 它与选择哪些项目 如果有的话 无关 而只是 S
  • 姜戈。复杂的注释需要别名。这里的别名是什么?

    我试图通过以下查询获取模型的最大值和最小值 max min price MyModel objects annotate Min price Max price 但我收到错误 复杂的注释需要别名 我不确定别名在这里意味着什么 并且我认为文档
  • 测试助手类的正确位置在哪里? (phpunit/最佳实践)

    我想使用 PHPUnit 测试我的应用程序 所以我像往常一样有我的应用程序类和第二棵带有测试类的树 现在我需要进行一些测试 一种虚拟 模拟对象 我想知道应该将它们放在哪里 它是一个不同的用例 它应该放在公共 lib 文件夹中还是更喜欢什么
  • 如何使用 FirefoxProfile 在 FireFox Selenium Webdriver 中启用 Adob​​e Flash

    我需要一种自动化方法来在 Firefox Selenium Webdriver 中启用 Flash 而无需用户交互 我努力了 FirefoxProfile profile new FirefoxProfile As 0 is to disa
  • Azure 移动应用自定义身份验证

    我正在尝试使用来实现自定义身份验证LoginAsync string provider JObject token MobileServiceClient 的重载 我有一个像这样的自定义身份验证控制器 MobileAppController
  • 如何检查事件是否已存在一天 - fullcalendar

    如何在使用时检查事件是否已经存在一天renderEvent method 我发现可能在堆栈中回答dayClick with clientEvents 我不确定它如何用于renderEvent var diffDay 5 for var i
  • 如何选择博客模型中的最后一个和倒数第二个条目?

    我有一个模型 blog posts 其中有一个字段 published at 我想从该模型中选择最新的两个博客以显示在我的主页上 但不确定如何构建它 目前 我有一个解决方法 可以获取一部分数据 但当我表中没有任何内容时 它会不断失败 而不是
  • ARM架构中不同处理器模式下如何使用内核堆栈?

    据我了解 每个进程都有一个用户堆栈和内核堆栈 除此之外 ARM 架构中的每种模式都有一个堆栈 所以我想知道不同的堆栈和堆栈指针在 ARM 模式下如何工作 另外 何时会使用与进程关联的内核堆栈 何时会使用与进程关联的内核堆栈 当您进行系统调用
  • Python 中枚举的枚举?

    Python 中是否可以有枚举的枚举 例如 我想要 enumA enumB elementA elementB enumC elementC elementD 供我参考elementA as enumA enumB elementA 或参考
  • 设置 GLEW 窗口?

    我有 Visual Studio 2010 我想在其上设置 glew h 我执行了这一步 但仍然出现链接器错误 1 下载glew包 2 将 h文件复制到C Program Files x86 Microsoft SDKs Windows v
  • Parsley.js - 更改错误容器

    我想改变每个错误消息的位置 即在相应的位置显示错误消息 div class errorBlock div 通过使用文档代码 错误消息显示在元素 输入 之前 而不是按预期显示 有任何想法吗 根据文档 errors container func
  • Knex 连接 Heroku Postgres 时出现错误?

    我正在尝试将 Heroku Postgres 与 Knex 连接 它在本地运行良好 但是当我推 Heroku 时 并尝试注册一个帐户 我收到这个错误 code DEPTH ZERO SELF SIGNED CERT 但我推 Heroku 我
  • Windows 服务错误 1053

    我目前正在编写一个 Windows 服务 它连接到 crm 系统以拉下一个计划 然后运行各种数据源等 我已经一切正常 除了当我安装所有内容并尝试运行启动服务时 我收到以下错误 错误 1053 服务未响应启动或控制请求 及时时尚 这是我在 S
  • 在 JavaScript 中,await 是否可以保证执行顺序而不需要赋值?

    主题 我可以说下面的两段代码是相等的吗 await someFunc no assignment here doSomethingAfterSomeFunc and someFunc then gt doSomethingAfterSome
  • 如何在android http POST中添加参数?

    friends 我正在尝试使用以下教程将文件上传到 php 服务器http getablogger blogspot com 2008 01 android how to post file to php server html http
  • 添加带有多个小部件链接的右键单击上下文菜单?

    我的问题是一种后续行动这个问题 https stackoverflow com questions 12014210 python tkinter app adding a right click context menu 23834156