tkinter调用系统复制粘贴功能

最近在用tkinter写一个小程序,其中涉及到要右键复制粘贴的问题,具体界面如下
在这里插入图片描述想在不同的框里执行复制和粘贴的操作,但是网上查询的资料都是针对单一组件的操作,因本人的程序是用类写的,而且主要也是用鼠标右键唤起快捷菜单操作,所以网上找了些资料都是不能满足我的需求,最后经过测试发现可以先点击要执行的区域,然后通过区域光标获取焦点的方法再对控件进行操作,便实现此功能,关键部分代码如下

def __init__(self,master):
        #实例化tk对象
        self.root = master
        #设置窗口宽度
        self.sizex = 600
        #设置窗口高度
        self.sizey = 600
        #设置屏幕显示的横坐标
        self.width = self.root.winfo_screenwidth()-self.sizex-30
        # 设置窗口位置
        self.root.geometry('{}x{}+{}+{}'.format(self.sizex,self.sizey,int(self.width),50))
        self.menubar = tk.Menu(self.root)
        # 创建右键菜单
        self.right_click_menu = tk.Menu(self.root, tearoff=False)
        self.right_click_menu.add_command(label="复制", command=self.on_copy)
        self.right_click_menu.add_command(label="粘贴", command=self.paste_text)
        self.right_click_menu.add_separator()
        self.right_click_menu.add_command(label="退出", command=root.quit)
        # 绑定右键点击事件
        self.root.bind("<Button-3>", self.popup)
        # 调用界面绘制窗口
        self.main_page()

    # 复制功能
    def on_copy(self):
        # 获取Text组件的当前选中内容
        self.root.focus_get().event_generate("<<Copy>>")

    # 粘贴功能
    def paste_text(self):
        # 获取剪贴板数据
        self.root.focus_get().event_generate("<<Paste>>")

    # 创建并显示菜单
    def popup(self,event):
        self.right_click_menu.post(event.x_root, event.y_root)

经过测试,发现即使在复制和粘贴中不是写的self.root,而是写self.text1.focus_get()依然可以准确的获得激活光标的控件。原本的想法是通过判断self.text1.focus_get()是否是我要控件位置来进行操作,但是现在自己返回已经激活的控件就可以直接调用控件的方法来操作,大大减轻了工作量。

本人能力有限,可能有更好的方法来达到我的需求,但是我没有发现,如果有大神有更好的方法,希望不吝赐教。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值