我试图在我的程序上更改粘贴命令。当我们从excel中复制表值时,无论它是垂直的还是水平线,它都将转换为垂直条目列表。但问题是,当我只想将单个值粘贴到随机条目行时,它总是从第一行条目中打印值,而不是从我选择的条目行中打印值。是否也可以使用鼠标创建函数来选择所有条目?
这是我的密码:
from tkinter import *
root=Tk()
d=[]
for i in range(4):
e=Entry(root,)
e.grid(row=i)
d.append(e)
def paste(event):
for entry in d:
entry.delete(0,'end')
data=root.clipboard_get().split()
for entry,i in zip(d,data):
if '\n':
entry.insert(0, i.split('\n'))
print(data)
elif '\t':
entry.insert(0, i.split('\t'))
print(data)
return 'break'
root.bind_all("<<Paste>>", paste)
root.mainloop()
你能帮我解决这个问题吗?
谢谢你!!
发布于 2022-11-24 18:19:02
这是因为for循环总是从第一个输入框开始。您需要在条目列表d
中找到所选条目的索引,并粘贴剪贴板数据,从它开始:
def paste(event):
try:
# get selected entry
w = root.focus_get()
# get the index of the selected entry in the entry list
idx = d.index(w)
# get the data from clipboard and split them into list
data = root.clipboard_get()#.rstrip() # strip the trailing '\n'
#print(repr(data)) # for debug purpose
if '\t' in data:
data = data.split('\t')
elif '\n' in data:
data = data.split('\n')
# paste the data starts from the selected entry
for entry, txt in zip(d[idx:], data):
entry.delete(0, 'end')
entry.insert('end', txt)
return 'break'
except Exception as ex:
# something wrong, like no entry is selected
print(ex)
https://stackoverflow.com/questions/74567678
复制相似问题