Есть код
import os import translators as ts from langdetect import detect from textblob import TextBlob import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk from gi.repository import Gdk from gi.repository import Pango CURRDIR = os.path.dirname(os.path.abspath(__file__)) ICON = os.path.join(CURRDIR, 'icon.xpm') intext = "A Gtk.TextView displays the text stored in a Gtk.TextBuffer. However, most text manipulation is accomplished with iterators, represented by a Gtk.TextIter - a position between two characters in the text buffer. Iterators are not valid indefinitely; whenever the buffer is modified in a way that affects the contents of the buffer, all outstanding iterators become invalid. Because of this, iterators can’t be used to preserve positions across buffer modifications. To preserve a position, we use a Gtk.TextMark, that can be set visible with visible(True). A text buffer contains two built-in marks; an \"insert\" mark (the position of the cursor) and the \"selection_bound\" mark." dettext = detect(intext) if dettext == 'ru': langout = 'en' else: langout = 'ru' blob = TextBlob(intext) number = len((blob.sentences)) print(number) outtext = ts.google(intext, to_language=langout, is_detail_result=True, if_use_cn_host=True) print(f"{dettext}-{langout}\n") i = 0 while i < number: out = outtext[0][i][0] print(out) i += 1 class TextViewWindow(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title=f"Translate {dettext}-{langout}") self.set_default_size(1000, 350) self.set_position(Gtk.WindowPosition.CENTER_ALWAYS) self.grid = Gtk.Grid() self.add(self.grid) self.create_textview() self.create_toolbar() self.key_Esc = Gdk.keyval_from_name("Escape") self.connect("key-press-event", self._key) def create_toolbar(self): toolbar = Gtk.Toolbar() self.grid.attach(toolbar, 1, 1, 1, 1) new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_CLOSE) new_button.set_is_important(True) toolbar.insert(new_button, 0) new_button.connect("clicked", self.on_button_clicked, self.tag_bold) new_button.show() def on_button_clicked(self, widget, tag): Gtk.main_quit() def create_textview(self): scrolledwindow = Gtk.ScrolledWindow() scrolledwindow.set_hexpand(True) scrolledwindow.set_vexpand(True) self.grid.attach(scrolledwindow, 0, 0, 2, 1) self.textview = Gtk.TextView() self.textbuffer = self.textview.get_buffer() self.textbuffer.set_text(f"{out}") scrolledwindow.add(self.textview) self.textview.set_wrap_mode(Gtk.WrapMode.WORD) self.tag_bold = self.textbuffer.create_tag("bold", weight=Pango.Weight.BOLD) self.textview.modify_font(Pango.FontDescription('Menlo Regular 24')) def _key(self, widg, event): if event.keyval == self.key_Esc: Gtk.main_quit() win = TextViewWindow() win.connect("destroy", Gtk.main_quit) win.set_icon_from_file(ICON) win.show_all() Gtk.main()
Выхлоп print(out) идет с разбиением на абзацы по предложениям(почему?). Естественно, Gtk.TextView() выводит только последний.
Как исправить? (не смог сформулировать вопрос для гугла)
Заранее спасибо!