20. Clipboard¶
Gtk.Clipboard
fornece uma área de armazenamento para uma variedade de dados, incluindo texto e imagens. O uso de uma área de transferência permite que esses dados sejam compartilhados entre aplicativos por meio de ações como copiar, cortar e colar. Essas ações geralmente são feitas de três maneiras: usando atalhos de teclado, usando um Gtk.MenuItem
e conectando as funções aos widgets Gtk.Button
.
Existem várias seleções da área de transferência para finalidades diferentes. Na maioria das circunstâncias, a seleção chamada CLIPBOARD
é usada para copiar e colar todos os dias. PRIMARY
é outra seleção comum que armazena texto selecionado pelo usuário com o cursor.
20.1. Exemplo¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk, Gdk class ClipboardWindow(Gtk.Window): def __init__(self): super().__init__(title="Clipboard Example") grid = Gtk.Grid() self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) self.entry = Gtk.Entry() self.image = Gtk.Image.new_from_icon_name("process-stop", Gtk.IconSize.MENU) button_copy_text = Gtk.Button(label="Copy Text") button_paste_text = Gtk.Button(label="Paste Text") button_copy_image = Gtk.Button(label="Copy Image") button_paste_image = Gtk.Button(label="Paste Image") grid.add(self.entry) grid.attach(self.image, 0, 1, 1, 1) grid.attach(button_copy_text, 1, 0, 1, 1) grid.attach(button_paste_text, 2, 0, 1, 1) grid.attach(button_copy_image, 1, 1, 1, 1) grid.attach(button_paste_image, 2, 1, 1, 1) button_copy_text.connect("clicked", self.copy_text) button_paste_text.connect("clicked", self.paste_text) button_copy_image.connect("clicked", self.copy_image) button_paste_image.connect("clicked", self.paste_image) self.add(grid) def copy_text(self, widget): self.clipboard.set_text(self.entry.get_text(), -1) def paste_text(self, widget): text = self.clipboard.wait_for_text() if text is not None: self.entry.set_text(text) else: print("No text on the clipboard.") def copy_image(self, widget): if self.image.get_storage_type() == Gtk.ImageType.PIXBUF: self.clipboard.set_image(self.image.get_pixbuf()) else: print("No image has been pasted yet.") def paste_image(self, widget): image = self.clipboard.wait_for_image() if image is not None: self.image.set_from_pixbuf(image) win = ClipboardWindow() win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main() |