Tkinter:访问使用 for 循环创建的特定小部件

2023-12-13

在我的 tkinter 项目中,我使用 a 为行列表中的每一行创建了一个条目、一个标签和两个按钮for环形。创建时我还将它们保存在列表中。

现在我的问题是如何访问它们?例如:如果单击第 12 行的编辑按钮,那么我希望能够获取第 12 个条目的条目值,或者如果我的用户单击列表中第 3 行的删除按钮,则仅获取该条目,所选行的标签和两个按钮应被删除。

这是我的代码:

self.line_loop = []

for line in self.line_list:
    self.row_count += 1

    self.n_entry = tk.Entry(self.list_frame, justify="center", width=4)
    self.n_entry.grid(row=self.row_count, column=0, pady=10, padx=10, ipady=3)

    self.text_label = tk.Label(self.list_frame, text=line, anchor="w", justify="left", 
                               wraplengt=701)
    self.text_label.grid(row=self.row_count, column=1, pady=10, padx=10, sticky="w")

    self.edit_button = tk.Button(self.list_frame, text="Edit", command=self.edit)
    self.edit_button.grid(row=self.row_count, column=2, pady=10, padx=10)

    self.delete_button = tk.Button(self.list_frame, text="Delete", command=self.edit)
    self.delete_button.grid(row=self.row_count, column=3, pady=10, padx=10)

    self.line_loop.append(self.n_entry)
    self.line_loop.append(self.text_label)
    self.line_loop.append(self.edit_button)
    self.line_loop.append(self.delete_button)

EDIT:这是函数的示例。该代码应该仅适用于单击的按钮和链接的小部件

def delete(self):
    self.n_entry.destroy() 
    self.text_label.destroy() 
    self.edit_button.destroy() 
    self.delete_button.destroy() 
def edit(self): 
    for entry in self.line_loop:
       print(entry.get())

我怎样才能这样做呢?


您没有提供有关编辑或删除函数的任何详细信息,但我猜测如果您获得相应的按钮来提供该函数的索引,则该函数可以索引到self.line_list:

        self.line_loop = []

        for index, line in enumerate(self.line_list):
            self.row_count += 1

            n_entry = tk.Entry(self.list_frame, justify="center", width=4)
            n_entry.grid(row=self.row_count, column=0, pady=10, padx=10, ipady=3)

            text_label = tk.Label(self.list_frame, text=line, anchor="w", justify="left", wraplengt=701)
            text_label.grid(row=self.row_count, column=1, pady=10, padx=10, sticky="w")

            edit_button = tk.Button(self.list_frame, text="Edit", command=lambda x=index: self.edit(x))
            edit_button.grid(row=self.row_count, column=2, pady=10, padx=10)

            delete_button = tk.Button(self.list_frame, text="Delete", command=lambda x=index: self.delete(x))
            delete_button.grid(row=self.row_count, column=3, pady=10, padx=10)

            self.line_loop.append((n_entry, text_label, edit_button, delete_button))
    def edit(self, index):
        n_entry, text_label, edit_button, delete_button = self.line_loop[index]
        line = self.line_list[index]
        ...

我用过enumerate()提供索引self.line_list并使用了command=lambda为示例提供索引参数的习惯用法edit() method.

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

Tkinter:访问使用 for 循环创建的特定小部件 的相关文章

随机推荐

  • 使用computeSpectrum()返回FFT值进行基音检测

    我正在使用 Actionscript 3 0 for Flash Player 10 3 进行开发 我在用着计算频谱 在加载的 mp3 上 运行 Event ENTER FRAME 以获取 byteArray 中每个样本的快照 ByteAr
  • 如何使用联接更新 DB2 表?

    我有两个表 我想通过加入它们来更新 我使用的是 DB2 V9 7 订单批准 ORDER ID CREATED BY ID CREATED BY NAME PROCESS DT 234 2 admin null 307 2 admin nul
  • 使用 IPython 作为有效的调试器

    如何在我的代码中嵌入 IPython shell 并拥有它自动显示行号 and function它在哪里被调用 我目前有以下设置来将 IPython shell 嵌入到我的代码中 from IPython frontend terminal
  • LuaJava错误处理中的错误

    我正在尝试使用 LuaJava 从 Java 调用一个简单的 Lua 函数 计算 lua function foo n return n 2 end 这就是 calc lua 中的全部内容以及来自命令行工作的后续调用 这是总是有错误的调用
  • Symfony 1.4 已弃用 php 中的函数

    有谁知道这个错误是什么 我需要这方面的帮助Deprecated preg replace The e modifier is deprecated use preg replace callback instead in C xampp h
  • 我可以绘制盒子,但无法将其移除! (帆布)

    我之前问过这个问题 看来我使用的代码非常混乱 所以这实际上是同一代码的简化版本 我使用 add 函数在画布上绘制一个正方形 同样 我应该能够使用删除功能从画 布中删除该项目 唉 事情似乎并没有发生 这是代码 window addEvent
  • Javascript setCustomValidity 不适用于 Chrome 版本 65

    如果您想使用 setCustomValidity 函数设置有效性 如下所示 则不会设置该消息
  • Access 警告查询中的 case 子句存在运算符错误

    Access 警告查询中的 case 子句存在运算符错误 第3行 找不到问题所在 SELECT x y z FROM SELECT FROM SELECT x y CASE WHEN Forms g d 0 THEN z ELSE Form
  • DATA TKX/2HKX/ 在 fortran 中意味着什么?

    此类数据在 Fortran 中初始化 DATA TKX 2HKX TKX是一个双实数 这意味着什么 DATA是一种老式的初始化变量的方法2HKX是一个 甚至更 老式的 Fortran 功能的示例 称为霍尔瑞斯数据 在这种情况下2HKX是一种
  • 如何访问测试目标中 Core Data 生成的 Obj-C 类?

    我在 Xcode 6 中有一个 Core Data Swift Cocoa 应用程序项目 我们将该项目称为Stuff 我创建了一个名为的核心数据实体Query并使用 Xcode 创建一个NSManagedObject它的子类 此时 Xcod
  • 如何使用 jQuery 保持多个 DIV 的高度相同?

    我有一些具有不同数量文本内容的 DIV 标签 HTML div div p p div div p p div div p p div div p p div div 它们采用二乘二的布局 并且宽度是可变的 CSS div boxes wi
  • 在一个图形中绘制某些内容,然后在另一图形中再次使用它

    我希望我在正确的地方问这个问题 我有一个 for 循环 因为创建了许多数字 循环完成后 我想再生成一个图形 其中三个先前创建的图作为子图 我现在的代码是这样的 import numpy as np import matplotlib pyp
  • 创建动态表以使用按钮添加新条目

    我正在尝试构建一个寄存器 以便当单击按钮时 一个新条目会出现在表格上 理想情况下 我希望在屏幕左侧构建一个表格 其中有两行 单击按钮时会出现新列 我希望表格具有固定大小 但在达到一定数量的条目后应该可以滚动 到目前为止 我已经创建并格式化了
  • 同时从前置和后置摄像头拍摄照片

    我想开发一个Android应用程序 它具有同时从相机 正面和背面 捕获照片的技术 我在互联网上搜索 但不幸的是我找不到任何更好的解决方案 note例如 如果我从后置摄像头拍摄照片 一旦从后置摄像头拍摄就意味着它必须自动启动前置摄像头来拍摄照
  • 如何最有效地替换Python中数组的每个第n个值?

    我想知道是否有一种更Pythonic 且更有效 的方法来执行以下操作 MAX SIZE 100 nbr elements 10000 y np random randint 1 MAX SIZE nbr elements REPLACE E
  • 适用于 Windows 的 Ruby on Rails IDE

    认真的你更喜欢哪一个红宝石 on Rails发展 我已经使用 NetBeans for PHP 和 Java 一年多了 它的效果确实很棒 但恕我直言 Rails 支持还不够好 我经常遇到代码完成问题 它找不到大多数导入的 gem 和函数 而
  • 使用 json-schema 要求或禁止基于另一个属性值的属性?

    我想在 json schema 中完成什么 当属性enabled is true 还需要某些其他属性 什么时候false 这些属性应该被禁止 这是我的 json 架构 type object properties enabled type
  • D3js - 强制定向图 - 相邻节点和链接的高级突出显示,可能吗?

    在我的力导向图的帮助下 我成功地突出显示了来自 Mike Bostock 的教程 现在 对于我的想法和图表需求的进一步过程 我有点卡住了 首先是因为我对 d3js 仍然一无所知 其次 我还没有找到任何类似的东西 为了弄清楚我的意图 您可以在
  • 在 Dart 中何时使用部分/部分与导入/导出?

    我不完全理解之间的区别part part of and import export在 Dart 中使用库时 例如 one dart library one part two dart Class One and two dart part
  • Tkinter:访问使用 for 循环创建的特定小部件

    在我的 tkinter 项目中 我使用 a 为行列表中的每一行创建了一个条目 一个标签和两个按钮for环形 创建时我还将它们保存在列表中 现在我的问题是如何访问它们 例如 如果单击第 12 行的编辑按钮 那么我希望能够获取第 12 个条目的