0

Biopython を使用して Pubmed を検索し (コードは Biopython のドキュメントにあります)、各レコードの結果 (タイトル、著者、ソース) を Gtk.TextView に表示したいと考えています。コードは印刷されたときに機能しますが、TextView を使用しようとすると、最初のレコードのみが表示されます。なぜこれが当てはまるのか誰かが知っていれば、助けていただければ幸いです。

これが私がこれまでに得たものです...

def pbmd_search(self): #searches pubmed database, using Biopython documentation
    handle = Entrez.egquery(term=self.entry.get_text())
    record = Entrez.read(handle)
    for row in record["eGQueryResult"]:
        if row["DbName"]=="pubmed":
            print(row["Count"])

    handle = Entrez.esearch(db="pubmed", term=self.entry.get_text(), retmax=1000)
    record = Entrez.read(handle)
    idlist = record["IdList"]

    handle = Entrez.efetch(db="pubmed", id=idlist, rettype="medline", retmode="text")
    records = Medline.parse(handle)
    records = list(records)

    records_str = ""
    tv = Gtk.TextView()
    for record in records:
        records_str +=("title:", record.get("TI", "?"), "authors:", record.get("AU", "?"), "source:", record.get("SO", "?"), (""))
        #print(records_str)

    tv.get_buffer().set_text(str(records_str))
    tv.set_editable(False)          
    sw = Gtk.ScrolledWindow()
    sw.set_size_request(300,200)
    sw.add(tv)
    w = Gtk.Window()                                                                                                                                                        w.add(sw)
    w.show_all()
4

1 に答える 1

1

私のコメントに書かれているように:forループは改行なしで1つの長い行を生成Gtk.TextViewし、行を折り返しません。

Python GTK+ 3 チュートリアルから:

Gtk.TextView ウィジェットのもう 1 つのデフォルト設定は、テキストの長い行が、改行が入力されるまで水平方向に継続することです。テキストをラップして画面の端からはみ出さないようにするには、Gtk.TextView.set_wrap_mode() を呼び出します。

したがって、出力文字列に改行を追加するか、Gtk.TextView.set_wrap_mode().

于 2016-09-18T18:33:20.523 に答える