angel725 2019-04-02 20:57 采纳率: 70%
浏览 448
已采纳

python设置win剪贴版 但只能复制出一个字母是为什么??

v_u = ['dd','dds','qqq']
v_n = ['111','222','333']



win = tk.Tk()
win.geometry('500x400')

def onCopy():
    # 右键菜单
    item_text = tv.item(tv.selection(), 'values')
    print(item_text[2])  # 输出所选行的第一列的值
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardData(win32clipboard.CF_TEXT, item_text[2])
    print(win32clipboard.GetClipboardData(win32clipboard.CF_TEXT))
    win32clipboard.CloseClipboard()


tv = ttk.Treeview(win,show='headings')
tv["columns"] = ('a','b','c')
tv.grid(row=4,columnspan=4,sticky='ES')

tv.column('a', width=50, anchor='center')
tv.column('b',width=200)
tv.column('c',width=200)
tv.heading('a',text='编号')
tv.heading('b',text='说明')
tv.heading('c',text='地址')

# 右键菜单
menu = tk.Menu(win, tearoff=0)
menu.add_command(label="复制地址", command=onCopy)


def popupmenu(event):
    menu.post(event.x_root, event.y_root)


tv.bind("<Button-3>", popupmenu)


def add_list():
    for i in range(len(v_u)):
        tv.insert('', 'end', values=(i + 1, v_n[i], v_u[i]))


tk.Button(win, text='add', width='10', height='1', command=add_list).grid(row=5, column=1)


win.mainloop()

tv是treeview
item_text[2]这个值打出来是对的。
但SetClipboardData后,我在粘贴,就只有第一个字母。
这是为什么?

  • 写回答

1条回答 默认 最新

  • 嘤嘤大军一员 2019-04-10 18:22
    关注

    我也遇到了这个情况 ,浏览了一些大神的例子,说的是第二个参数也就是复制到剪切板的信息要是个字节流,字符串的话用bytes(str,encoding='utf-8')解码成字节就好了!也就说明python似乎通过“网络”即端口与真机进行交互!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵