Contact me: hankecnc@gmail.com

Python3 在启动时使用剪贴板的怪癖 #1336

推推 grbl 3年前 (2023-02-02) 308次浏览
打开
onekk 打开了这个问题 2020 年 1 月 8 日 · 10 条评论
打开

Python3 在启动时使用剪贴板的怪癖#1336

onekk 打开了这个问题 2020 年 1 月 8 日 · 10 条评论

评论

Python3 在启动时使用剪贴板的怪癖 #1336
贡献者

启动时使用编辑器粘贴按钮粘贴时在Python3中产生错误(启动时剪贴板中没有数据)

    obj = unpickler.load()
TypeError: a bytes-like object is required, not 'str'

相对于 CNCList 上的粘贴方法

        try:
            # try to unpickle it
            unpickler = pickle.Unpickler(StringIO(clipboard))

            try:
                while True:
                    obj = unpickler.load()

我怀疑这是由在 python3 中处理 pickle 对象的新方法引起的,并且 StringIO 是错误的,因为 python3 unpickler 期望字节作为输入

即使在 CNCList 副本中尝试复制时也会出现更多错误

    def copy(self, event=None):
        """Copy selected items to clipboard"""
        sio = StringIO()
        pickler = pickle.Pickler(sio)
        # sio.write(_PLOT_CLIP)
        for block, line in self.getCleanSelection():
            if line is None:
                pickler.dump(OCV.blocks[block].dump())

   pickler.dump(OCV.blocks[block].dump())
TypeError: string argument expected, got 'bytes'

pickle 在 python2 和 3 之间发生了变化,因此可能需要完全重写才能使剪贴板按预期工作。

问候
Carlo D.

Python3 在启动时使用剪贴板的怪癖 #1336
合作者

你可能有旧的 bCNC 版本。据我所知,这已在#1328中修复