亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

指定從 Qt 應用程序復制的文本格式?粘貼時以某種方式使其他應用程序崩潰

指定從 Qt 應用程序復制的文本格式?粘貼時以某種方式使其他應用程序崩潰

慕容3067478 2023-02-15 16:32:48
我正在制作一個小型 Qt/Pyside2/QML 應用程序,其全部目的是方便地生成和復制一些文本以粘貼到另一個程序中。(以防萬一,它是https://lackeyccg.com/;我懷疑唯一可能相關的事實是它太老了,根本不能很好地與 Unicode 兼容。)我目前正在運行macOS 10.13,以防特定剪貼板相關。在 PySide 中,我像這樣復制文本:clipboard = QGuiApplication.clipboard() clipboard.setText(text_to_copy)調用clipboard.mimeData().formats()告訴我數據格式為text/plain. 切換到文本編輯器、網絡瀏覽器等并粘貼就可以了。此外,如果我然后選擇我粘貼的內容,復制它,并將其粘貼到 LackeyCCG 中,一切又都很好。不幸的是,在 Qt 中復制后直接粘貼到 LackeyCCG 會使 Lackey 崩潰。我已經用幾個測試字符串驗證了這一點,排除了非 ASCII 字符或換行符等可能的原因;似乎唯一不會導致崩潰的是空字符串。我猜這與 Qt 提供的文本格式有關。通過osascript -e 'the clipboard as record' | less在命令行上運行,我可以檢查系統剪貼板的內容。從多個文本編輯器以及 Chrome 復制的文本包含格式<<class utf8>>、<<class ut16>>和string。(string奇怪的是,該版本的換行符被回車符代替了。)相比之下,從我的 Qt 應用程序復制的文本包含string, Unicode text, 和<<class ut16>>(并且它string有普通的換行符)。我對文本編碼的細節沒有最嚴格的把握,但這里的操作差異似乎可能是缺少 UTF-8 版本。顯然,大多數現代應用程序都足夠聰明,可以解釋 Qt 提供給它們的內容,即使它與大多數應用程序顯然產生的內容不同。但是對于我們這些試圖粘貼到廢棄軟件中的人來說,有沒有辦法強制 Qt/PySide2 以特定格式輸出文本?(或者對問題可能是什么的任何見解,如果不是的話?)
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

雖然我仍然不知道 PySide2 自己的機制是否可行,但我找到了一個非常簡單的解決方案:https://pypi.org/project/pyperclip/

import pyperclip
pyperclip.copy(text_to_copy)

然后剪貼板包含一個 UTF-8 版本,一切正常。


查看完整回答
反對 回復 2023-02-15
  • 1 回答
  • 0 關注
  • 246 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號