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

忽然笑
TA貢獻1806條經(jīng)驗 獲得超5個贊
雖然我仍然不知道 PySide2 自己的機制是否可行,但我找到了一個非常簡單的解決方案:https://pypi.org/project/pyperclip/
import pyperclip pyperclip.copy(text_to_copy)
然后剪貼板包含一個 UTF-8 版本,一切正常。
添加回答
舉報
0/150
提交
取消