努力绑定 tkinter 文本小部件中的标签

2024-04-19

我在 tkinter 模块中的文本小部件上遇到了一些困难。 我添加了尝试将函数绑定到的标签。

无论我如何输入,它都会发生以下两种情况之一。我可以单击文本小部件,但弹出的唯一功能是最后一个项目,无论我单击何处。第二件事是它会自动输出所有功能。

对原始帖子进行了编辑并删除了我输入的编码。此处进行了与原始编码中相同的函数调用(此处不必要的代码少了 15k):

 #!/usr/bin/en python
 # *-* coding: utf-8 *-*

 import platform as platform
 from tkinter import *

 class guidelen:
      def __init__(self, master):
           self.master = master
           self.master.title("programmet")
           self.master.geometry("400x400")

           self.populate()

      def populate(self):
           self.meny = Menu(self.master, tearoff=0)
           self.startmeny = Menu(self.meny, tearoff=0)
           self.startmeny.add_command(label="Avslutt",command=self.master.quit)
           self.meny.add_cascade(label="Start", menu=self.startmeny)
           self.master.config(menu=self.meny)
           self.tekstfelt = Text(self.master)
           self.tekstfelt.pack(fill=BOTH, expand=True)



      setninger = ["første setningen","andre setningen","tredje setningen"]
           start = 0
           posisjon = 1
           while start < len(setninger):
               pos = str(posisjon) + ".0"
               b = len(setninger[start])
               pos2 = str(posisjon) +"."+ str(b)
               setning = setninger[start] + "\n"
               self.tekstfelt.insert(pos, setning)
               setning.replace("\n","")
               self.tekstfelt.tag_add(setning, pos, pos2)
               self.tekstfelt.tag_bind(setning, "<Button-1>", self.utskrift2(start))
               print(start)
               posisjon += 1
               start += 1

       def utskrift(self, event):
           print("Prøver tag bindingen")

       def utskrift2(self, event):
           if event == 0:
               print("Taggen til første linjen")
           if event == 1:
               print("Taggen til andre linjen")
           if event == 2:
               print("Taggen til tredje linjen")


 if __name__ == "__main__":
       start = Tk()
       guidelen(start)
       start.mainloop()

因此,无论我如何更改该函数,它总是对文本小部件中的所有项目提供相同的绑定,或者它只是自动喷出所有绑定/函数调用。

有人知道我做错了什么吗?


考虑这段代码:

self.tekstfelt.tag_bind(setning, "<Button-1>", self.utskrift2(start))

它与此代码具有相同的行为:

result = self.utskrift2(start)
self.tekstfelt.tag_bind(setning, "<Button-1>", result)

你看到问题了吗?你需要通过一个callable到绑定,并且您的函数没有返回可调用对象。

解决方案是使用类似的东西lambda https://docs.python.org/2/reference/expressions.html?highlight=lambda#lambda or functools.partial https://docs.python.org/2/library/functools.html#functools.partial。我更喜欢lambda主要是因为它不需要额外的导入。使用lambda,您需要该函数接受event由tkinter传递,还需要传入起始值。它看起来像这样:

self.tekstfelt.tag_bind(setning, "<Button-1>", lambda event, start=start: self.utskrift2(start))

既然你打电话utskrift2有一个参数,并且该参数是start值而不是event,你需要重新定义utskrift2看起来像这样:

def utskrift2(self, start):
    if start == 0:
        print("Taggen til første linjen")
    if start == 1:
        print("Taggen til andre linjen")
    if start == 2:
        print("Taggen til tredje linjen")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

努力绑定 tkinter 文本小部件中的标签 的相关文章

  • 打印 scrapy 请求的“响应”

    我正在尝试学习 scrapy 在遵循教程的同时 我正在尝试进行细微的调整 我想简单地从请求中获取响应内容 然后我会将响应传递到教程代码中 但我无法发出请求并获取响应内容 建议就好 from scrapy http import Respon
  • 在 Python 中使用 XPath 和 LXML

    我有一个 python 脚本 用于解析 XML 并将某些感兴趣的元素导出到 csv 文件中 我现在尝试更改脚本以允许根据条件过滤 XML 文件 等效的 XPath 查询将是 DC Events Confirmation contains T
  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • python ttk treeview:如何选择并设置焦点在一行上?

    我有一个 ttk Treeview 小部件 其中包含一些数据行 如何设置焦点并选择 突出显示 指定项目 tree focus set 什么也没做 tree selection set 0 抱怨 尽管小部件明显填充了超过零个项目 但未找到项目
  • 如何使用 openpyxl 对工作簿中的 Excel 工作表/选项卡进行排序

    我需要按字母数字对工作簿中的选项卡 工作表进行排序 我在用openpyxl https openpyxl readthedocs io en default 操作工作表 您可以尝试排序workbook sheets list workboo
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • 使用循环将对象添加到列表(python)

    我正在尝试使用 while 循环将对象添加到列表中 基本上这就是我想做的 class x pass choice raw input pick what you want to do while choice 0 if choice 1 E
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • WindowsError:[错误 5] 访问被拒绝

    我一直在尝试终止一个进程 但我的所有选项都给出了 Windows 访问被拒绝错误 我通过以下方式打开进程 一个python脚本 test subprocess Popen sys executable testsc py 我想杀死那个进程
  • 使用 lambda 函数更改属性值

    我可以使用 lambda 函数循环遍历类对象列表并更改属性值 对于所有对象或满足特定条件的对象 吗 class Student object def init self name age self name name self age ag
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 如何在SqlAlchemy中执行“左外连接”

    我需要执行这个查询 select field11 field12 from Table 1 t1 left outer join Table 2 t2 ON t2 tbl1 id t1 tbl1 id where t2 tbl2 id is
  • 如何识别图形线条

    我有以下格式的路径的 x y 数据 示例仅用于说明 seq p1 p2 0 20 2 3 1 20 2 4 2 20 4 4 3 22 5 5 4 22 5 6 5 23 6 2 6 23 6 3 7 23 6 4 每条路径都有多个点 它们
  • 小部件配置在 macOS 上不起作用

    我为我的 iOS 应用程序制作了一个小部件 效果很好 现在我正在将其移植到我的 macOS 应用程序中 但不知何故 小部件配置不起作用 这些项目已显示 但我无法以某种方式选择它们 查看屏幕截图 但请看一下我制作的视频 https youtu

随机推荐

  • 如何跨 NodeJs 应用程序和模块正确重用与 Mongodb 的连接

    我一直在阅读和阅读 但仍然对跨整个 NodeJs 应用程序共享相同数据库 MongoDb 连接的最佳方式感到困惑 据我了解 连接应该在应用程序启动时打开并在模块之间重用 我目前认为最好的方法是server js 一切开始的主文件 连接到数据
  • 当我执行 npm install [重复] 时,Node js 添加不需要的模块

    这个问题在这里已经有答案了 我正在尝试在我的 Mac 上启动节点服务 当我在节点服务所在的文件夹中运行 npm install 时 它正在安装 package json 中未提及的模块 有一些我不期望的额外模块 以及一些我期望的模块丢失了
  • 在perl中串行处理XML数据

    我想知道在我的情况下 哪种 XML 解析器最适合 Perl 我读了很多书并尝试过XML LibXML and XML SAX 第一个使用了太多内存 第二个对我来说似乎没有那么快 即使在关闭纯 Perl 解析器之后 我的需求相当具体 我通过以
  • 如何对函数的返回值进行单元测试 - Angular (Jasmine/Karma)

    我想知道是否有一种方法可以正确测试 Angular 中函数的返回值 我想本质上测试一个测试的返回值是否正确 并编写另一个测试来测试相反的场景 Ts 组件 get if this object undefined return true el
  • 如何在 MVC 中通过 JQuery 调用 HttpHandler

    我以前没有在 MVC 中使用过 httpHandlers 但是我想在我的应用程序中停止会话超时 我在这里找到了解决方案 http www dotnetcurry com ShowArticle aspx ID 453 http www do
  • .net 中 Tuple(T1)/Singleton 的用途是什么?

    net 4 中的元组类型之一是单元素元组 http msdn microsoft com en us library dd384265 aspx 我只是想知道这个结构的目的是什么 我看到的唯一用途是在使用时8 Tuple http msdn
  • 使用 RecursiveDirectoryIterator 在顶部按最新日期对文件进行排序

    现在默认情况下它按字母表显示 我不希望这样 我想使用以下方式对文件进行排序递归目录迭代器最新文件位于顶部 按降序排列 还使用if 条件比较日期并获取该日期的文件
  • 设置预定义的节点样式?

    在过去的 15 分钟里 我一直在谷歌上搜索 试图找到这个问题的答案 但我似乎无法弄清楚 我的任务是为我在工作中开发的一些应用程序构建一些小流程图 他们不需要任何花哨的东西 因为他们将在 vizio 中将其转换为他们喜欢的格式 他们甚至说我们
  • VB6 UDT 自检

    我有一种感觉 这个问题的答案将是 不可能 但我会尝试一下 我的处境并不令人羡慕 需要修改旧版 VB6 应用程序并进行一些增强 转换为更智能的语言不是一个选择 该应用程序依赖大量用户定义类型来移动数据 我想定义一个通用函数 它可以引用任何这些
  • PHPStorm + XDebug 设置演练

    直到最近 我一直在用 PHP 通过 Notepad 编写代码 并通过检查 IIS 中的日志进行调试 一定喜欢那个 Web 平台安装程序 从那时起 我决定更新到更高效的代码编写 测试环境 并在使用 PHPStorm 玩了一会儿之后 决定购买它
  • 使 Chart.js 在悬停时在散点图中的点之间呈现一条线

    我有一个包含两个数据集的简单散点图 active and passive const data datasets label Active sentences A1 A2 A3 data 0 4340433805869016 0 12813
  • 如何在输入中使用 angular2 datepipe

    我有一个来自我的服务器的日期字符串 如下所示 1992 05 26T18 30 00Z 我正在尝试使用日期管道将其格式化为 DD MM YYYY 格式并将其绑定到我的输入 ngModel var userdate any new Date
  • 如何在没有互联网的情况下安装 angular-cli

    如果你只有 zip 文件来安装 angular cli 如何在没有互联网连接的情况下安装它 有了那个邮政编码只有你不会能够实现这一点 因为在bin文件夹 将ng仍然需要一些依赖 为了做到这一点 从官方存储库下载 zip https gith
  • Gradle 未针对 Firebase 云消息传递进行编译

    我注意到 Firebase API 已从 v 9 0 0 升级到 v 9 0 1 因此决定对此进行更改 然而 它并没有引起人们的注意 这是 Gradle Logcat 中的错误 Error 25 13 Failed to resolve c
  • 如果没有 sudo,则无法在 Qt 应用程序中使用键盘

    我有一个在 BeagleBone Black 上运行的交叉编译的嵌入式 Qt 应用程序 它工作正常 但有一件事 如果我不直接在 BeagleBone Black 上运行 它不接受键盘输入sudo 这是一个问题 因为 我无法远程调试应用程序并
  • 如何将多个 Range 对象合并为一个,用作图表源

    我正在尝试制作一个图表 其中多列作为源区域 基本上 我想选择特定的列 跳过一些列 然后将它们全部合并到一个范围中 我设置了一个循环 在其中创建一个范围 并将其地址附加到一个字符串中 并用逗号分隔它们 我很确定这就是 Excel 想要的格式
  • 无法添加自定义 Sonos 服务的帐户

    我创建了 Sonos 音乐服务 并使用 Customsd 将其添加到我的扬声器中 两个端点 URL 常规和安全 均可用 服务已成功添加到扬声器 使用 SoapUI 我可以发送 GetSessionId 的 https 请求 它会返回有效的响
  • textbox1.Text 无法从另一个表单复制 textbox2.Text 值[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 下面是我的代码 private void btnCptKb5 Click object sender EventArgs e Form1 f
  • 最大重叠矩形数

    我看过这个面试问题 但不知道如何回答 给定 N 个矩形 找出重叠矩形的最大数量 例如 对于左下点和右上点表示的矩形 1 1 3 3 2 2 4 4 1 3 2 4 2 2 3 3 返回 3 因为前两个和最后一个矩形重叠 我可以想到一个时间复
  • 努力绑定 tkinter 文本小部件中的标签

    我在 tkinter 模块中的文本小部件上遇到了一些困难 我添加了尝试将函数绑定到的标签 无论我如何输入 它都会发生以下两种情况之一 我可以单击文本小部件 但弹出的唯一功能是最后一个项目 无论我单击何处 第二件事是它会自动输出所有功能 对原