0

期待どおりに動作しない単純なコードがいくつかあります。まず、Gtk.Clipboard.get(Gdk.SELECTION_PRIMARY).set_text()長さ引数オプションで引数を 1 つだけ受け入れることができるはずですが、機能しません (以下を参照)。最後に、Unicode°シンボルを貼り付けると、クリップボードから取得しようとするとテキストの設定が壊れます (他のプログラムには貼り付けられません)。次の警告が表示されます。

Gdk-WARNING **: UTF8_STRING からの選択の変換中にエラーが発生しました

>>> from gi.repository.Gtk import Clipboard
>>> from gi.repository.Gdk import SELECTION_PRIMARY
>>> d='\u00B0'
>>> print(d)
°
>>> cb=Clipboard
Clipboard
>>> cb=Clipboard.get(SELECTION_PRIMARY)
>>> cb.set_text(d) #this should work
Traceback (most recent call last):
  File "<ipython-input-6-b563adc3e800>", line 1, in <module>
    cb.set_text(d)
  File "/usr/lib/python3/dist-packages/gi/types.py", line 43, in function
    return info.invoke(*args, **kwargs)
TypeError: set_text() takes exactly 3 arguments (2 given)

>>> cb.set_text(d, len(d))
>>> cb.wait_for_text()

(.:13153): Gdk-WARNING **: Error converting selection from UTF8_STRING
'\\Uffffffff\\Uffffffff'
4

3 に答える 3

1

のドキュメントからGtk.Clipboard

メソッドset_textには 2 番目の引数が必要なようです。1 つ目はテキスト、2 つ目はテキストの長さです。または、長さを提供したくない場合は、-1 を使用して長さ自体を計算させることができます。

gtk.Clipboard.set_text

def set_text(text, len=-1) 

テキスト : 文字列。

len : テキストの長さ (バイト単位)、または長さを計算するための -1。

Python 3 でテストしたところ、cb.set_text(d, -1).

于 2013-04-11T18:03:22.433 に答える
0

Python 3.4 で。これは GtkEntryBuffers にのみ必要です。GtkTextBuffer の場合set_text、2 番目のパラメーターなしで機能します。

example1 は通常どおり動作します。

settinginfo = 'serveradres = ' + server + '\n poortnummer = ' + poort
GtkTextBuffer2.set_text(settinginfo)

example2 には、追加のパラメーター len が必要です。

ErrorTextDate = 'choose earlier date'
GtkEntryBuffer1.set_text(ErrorTextDate, -1)
于 2016-07-07T09:52:38.753 に答える