通过每个框的单独按钮从每个输入框获取值
Get values from each entry box through individual button for each box
我通过循环创建了 Entry 和按钮,就像这样
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 的字典,输出是这样的。
Output
我想为每个按钮做的是,我想将值从文本框复制到剪贴板。
我知道如何复制到剪贴板,只是获取相应的值是问题所在。
编辑:
Header 是字典列表; pos_x用于从一行切换到另一行; pos_y 用于切换到下一列。
在这里,我对字典进行迭代,以将名称从字典获取到第一个文本框,将值获取到另一个文本框。
像这样:{"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()
结果:
你可以简单地将入口引用传递给相应按钮的命令函数,如下所示:
def do_clipboard_copy(entry):
text = entry.get() # get the entry content
print(text)
# do whatever you know to copy the entry content to clipboard
for i in range(len(headers)):
row = i // 2
col = (i % 2) * 2
entry = Entry(top, width=30)
entry.grid(row=row, column=col)
entry.insert(0, headers[i].get('name'))
Button(top, text='Copy', command=lambda e=entry: do_clipboard_copy(e)).grid(row=row, column=col+1)
我通过循环创建了 Entry 和按钮,就像这样
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 的字典,输出是这样的。 Output
我想为每个按钮做的是,我想将值从文本框复制到剪贴板。 我知道如何复制到剪贴板,只是获取相应的值是问题所在。 编辑: Header 是字典列表; pos_x用于从一行切换到另一行; pos_y 用于切换到下一列。 在这里,我对字典进行迭代,以将名称从字典获取到第一个文本框,将值获取到另一个文本框。 像这样:{"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()
结果:
你可以简单地将入口引用传递给相应按钮的命令函数,如下所示:
def do_clipboard_copy(entry):
text = entry.get() # get the entry content
print(text)
# do whatever you know to copy the entry content to clipboard
for i in range(len(headers)):
row = i // 2
col = (i % 2) * 2
entry = Entry(top, width=30)
entry.grid(row=row, column=col)
entry.insert(0, headers[i].get('name'))
Button(top, text='Copy', command=lambda e=entry: do_clipboard_copy(e)).grid(row=row, column=col+1)