我有一些簡單的代碼不能按預期方式工作。首先,文檔說Gtk.Clipboard.get(Gdk.SELECTION_PRIMARY).set_text()
應該只能接受一個帶長度參數選項的參數,但它不起作用(見下文)。最後,粘貼一個unicode °
符號會在嘗試從剪貼板中檢索文本時中斷文本設置(並且不會粘貼到其他程序中)。它提供了這樣的警告:python與Gtk3沒有正確設置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'
檢查我的代碼後,我發現,只需要空textbuffers額外的參數。如果緩衝區預填充了初始文本,則len參數不會被要求。使用Glade構建GUI並在指定的文本塊中填充文本時就是這種情況。 –