python - 通过每个框的单个按钮从每个输入框获取值
问题描述
我通过一个循环创建了条目和按钮,就像这样
for i in range(len(headers)):
pos_y = 0;
e = tk.Entry(top, width = 30);
e.grid(row = pos_x, column = pos_y);
entry[i] = e;
e.insert(0, headers[pos_x].get('name'));
pos_y += 1;
b = tk.Button(top, text = 'Copy');
b.grid(row = pos_x, column = pos_y);
button[i] = b;
pos_y += 1;
我有两个用于 Entry 和 Button 的字典,输出是这样的。 输出
我想要做的是对于每个按钮,我想将值从文本框复制到剪贴板。我知道如何复制到剪贴板,只是得到相应的值就是问题所在。编辑:标题是字典列表;pos_x 用于从一行切换到另一行;pos_y 用于切换到下一列。在这里,我在字典上进行迭代,以将名称从 dict 获取到第一个文本框,并将值获取到另一个文本框。像这样 :{"name": "key", "value": "2500"} button 和 entry 是字典,上面声明为 entry{} 和 button{}。
解决方案
我认为你让事情变得比他们需要的更复杂。您不需要将按钮放在 dict/list 中,因为它们在创建后不会更改。而是考虑使用一个简单的列表来记录您的条目值,然后在需要它们时使用它们的索引来调用它们的 get 方法。
这是我的例子。如果您有任何问题,请告诉我。
import tkinter as tk
class Example(tk.Tk):
def __init__(self):
super().__init__()
self.entry_list = []
r = 0
c = 0
for i in range(6):
self.entry_list.append(tk.Entry(self, width=30))
self.entry_list[-1].grid(row=r, column=c)
tk.Button(self, text='Copy', command=lambda ndex=i: self.copy_to_clipboard(ndex)).grid(row=r, column=c+1)
if r == 2:
c += 2
r = 0
else:
r += 1
def copy_to_clipboard(self, ndex):
print(self.entry_list[ndex].get())
self.clipboard_clear()
self.clipboard_append(self.entry_list[ndex].get())
Example().mainloop()
结果:
推荐阅读
- php - 用php解析文本
- node.js - Node.js - 在 excel 中获取上标和下标
- sql - 根据 sql server 中立即可用的数据填充当前行
- python - 使用元组键将 Pandas 数据框转换为字典以进行三元图
- java - Java 在决定是否删除对象之前迭代 map 两次
- python - Python:当我尝试将 JSON 文件插入 Mongodb 时,如果 json 文件无效,则会抛出错误。如何捕获错误
- powershell - 遍历数组并返回Powershell中每个对象的结果
- for-loop - R中嵌套for循环的问题
- git - git 忽略并取消跟踪远程服务器上的文件夹
- tensorflow - 用于 Microsoft Cognitive CNTK/TensorFlow 的 VGA 卡 (GPU)