1

wxPython への追加としてObjectListViewという Python モジュールを使用しています。私はpython2.7とwxPython 2.8.1.2.1を使用しています

私の問題は、情報を Windows クリップボードにコピーすることです。モジュール ObjectListView には、win32clipboard を使用して情報をクリップボードに保存するセクションがあります。ただし、情報を取得すると、最初の文字のみが返されます。. 。何もありません。

    try:
        win32clipboard.OpenClipboard(0)
        win32clipboard.EmptyClipboard()
        cfText = 1
        print txt #prints 'hello world'
        win32clipboard.SetClipboardData(cfText, txt)
        print htmlForClipboard #prints html output
        cfHtml = win32clipboard.RegisterClipboardFormat("HTML Format")
        win32clipboard.SetClipboardData(cfHtml, htmlForClipboard)
        print win32clipboard.GetClipboardData() #prints 'h'
    finally:
        win32clipboard.CloseClipboard()

それがモジュールのコードです。デバッグ用の印刷ステートメントを入力しました。印刷されるテキストにコメントしました。この問題は、このモジュールでのみ発生します。コードのそのセクションを Python インタープリターで実行すると、正常に機能し、クリップボードは入力全体を返します。

この問題の原因は何ですか?

4

3 に答える 3

3

文字列が最初の文字にクリップされるとき、私が最初に考えるのは、UTF-16が8ビット文字として解釈されているということです。ほとんどのヨーロッパ言語の2バイトUTF-16シーケンスの2番目のバイトはゼロであり、文字列が早期に終了します。これを試して:

print win32clipboard.GetClipboardData().decode('utf-16le')

encode('utf-16le')データをクリップボードに設定するときにも使用します。

于 2012-12-18T16:57:58.210 に答える
0

コピーと貼り付けに ObjectListView を使用する代わりに、wxPython に含まれているメソッドを試す必要があります。関連するリンクを次に示します。

単純なコピーと貼り付けのアクションにそれを使用しても問題はありませんでした。

于 2012-12-18T16:49:18.787 に答える