2016-11-25 20 views
1

これは私の問題ですが、私は他の場所で答えを見つけることができません。 Gtkのテキストビュー(python3)にいくつかのテキストを表示し、それぞれのテキストの後に改行を入れたいと思います。 "\ n"を使うと、実際に新しい行に追加するのではなく、 "\ n"と表示されます。私はこれを解決できる方法はありますか?Gtk textviewに新しい行を追加するには?

これは

import gi 
gi.require_version("Gtk", "3.0") 
from gi.repository import Gtk 

records =() 
tv = Gtk.TextView() 

records += ("a", "\n", "b", "\n", "c", "\n") 
tb = tv.get_buffer() 
tb.set_text(str(records)) 

sw = Gtk.ScrolledWindow() 
sw.set_size_request(300,400) 
sw.add(tv) 

w = Gtk.Window() 
w.add(sw) 
w.show_all() 

Gtk.main() 

(psの私は、経験豊富なプログラマーではないよ。)...のGtkウィンドウ内の現在の出力私の問題、その後、私の出力の再現性のバージョンである必要があります。

('a','\n','b', '\n', 'c') 
Gtkのウィンドウで

所望の出力:

'a' 
'b' 
'c' 

答えて

1

%s文字列書式を使用してこの問題を解決する方法を示しました。

tv = Gtk.TextView() 
    for record in records: 
     records_str += "Title: %s \nAuthors: %s \nSource: %s\n\n" %(record.get("TI"), ", ".join(record.get("AU")), record.get("SO")) 

    tb = tv.get_buffer() 
    tb.set_text("".join(records_str)) 

この版画「タイトル」、「著者」と別の行に「ソース」:ここで私は実際に働いていたコードのサンプルです。

1

あなたはという名前の変数にデータを結合する必要がありますこのような1つの文字列に:

import gi 
gi.require_version("Gtk", "3.0") 
from gi.repository import Gtk 

records =() 
tv = Gtk.TextView() 

records += ("a", "\n", "b", "\n", "c", "\n") 
tb = tv.get_buffer() 
# join in one single string 
tb.set_text("".join(records)) 


sw = Gtk.ScrolledWindow() 
sw.set_size_request(300,400) 
sw.add(tv) 

w = Gtk.Window() 
# Don't forget to connect your window's close button 
# to Gtk.main_quit signal, or whatever the signal you want 
w.connect("delete-event", Gtk.main_quit) 
w.add(sw) 
w.show_all() 

Gtk.main() 

のGtkウィンドウ内の出力は次のようになります

textbufferに追加
a 
b 
c 
+0

ありがとう、これは部分的には機能しましたが、私の実際のコードが少し複雑になってしまったようです。 – Fliss

+0

あなたの質問を編集し、コードの複雑さを更新することができます。あなたのお手伝いをするために私の回答を更新します。どういたしまして –

2

、最初にそれを読まずに、iters(ソートの点を用いて達成することができますバッファの内容)。たとえば、あなたがバッファの最後asking for an iter at the endで追加することができます:あなたはまた、挿入することができ

bff = Gtk.TextBuffer() 
    view = Gtk.TextView(buffer = bff) 
    bff.set_text("This is the beginning\n") 

    iter = bff.get_end_iter() 
    bff.insert(iter, "And this is a newly inserted line\n") 

:初め(get_start_iter)で

  • を、特定の
  • はへ(文字)のオフセットテキストに残してある特定の 'マーク' のテキスト(get_iter_at_offset)、特定の行()で
  • ()など。
関連する問題