11

次のコード スニペットは、システム クリップボードにまったく影響を与えないようです。

clipboard = QtGui.QApplication.clipboard()
clipboard.setText(text)

Qtのドキュメントによると、これはテキストをクリップボードにコピーする方法であり、

なぜ機能しないのですか?

グーグルはこれを見つけました。

上記のコードの後に​​これを追加することをお勧めします:

event = QtCore.QEvent(QtCore.QEvent.Clipboard)
app.sendEvent(clipboard, event)

しかし、これは奇妙に振る舞います: プログラムが終了した後、テキストをクリップボードにコピーするだけです。さらに、そのリンクの一部の人々は、これが Linux では機能しないと報告しています。

アップデート:

気にしないでください、コピースロットをコピーボタンにバインドする代わりに、「終了」ボタンに接続したところで何か間違ったことをしていました。

4

4 に答える 4

5

あなたがWindowsを使用していないことは知っていますが、これでいくつかのアイデアが得られるかもしれません...これをPyQtプログラムで使用して、URLをクリップボードにコピーしました。

import win32clipboard

s = 'copy this to the clipboard'
try:
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardText(s)
    win32clipboard.CloseClipboard()
except:
    print 'Could not copy clipboard data.'
于 2009-07-02T11:16:23.063 に答える
1

私の英語でごめんなさい。Linuxを使用しています。このコマンドだけ書いた

QApplication.clipboard().setText("これはテキスト 2 クリップボードです")

于 2021-02-02T14:19:11.737 に答える
0

PyGTKのgtk.Clipboardを試すことができます。マルチプラットフォームだと思います。

これは、PyQt のQClipboardオブジェクトで問題が発生している理由の一部である可能性があります。

QClipboard QApplication.clipboard ()

アプリケーションのグローバル クリップボードへのポインターを返します。

注: QApplication オブジェクトは、クリップボードにアクセスする前に既に構築されている必要があります。

システムのクリップボードではなく、アプリケーションのクリップボードを指しています。目的を達成するには、おそらく QClipboard オブジェクト以外のものを使用する必要があります。

編集:

引用されたドキュメントからの上記の結論は正しくありません。QClipboardオブジェクトの実際の PyQt ドキュメントによると:

QClipboard クラスは、ウィンドウ システムのクリップボードへのアクセスを提供します。

于 2009-07-02T11:30:43.377 に答える