2017-05-21 3 views
0

Ich bin jetzt etwas ratlos, ich benutze ein TextView als Statusprotokoll, neue Zeilen hinzugefügt, wenn etwas passiert, das ist die Funktion, die ich dafür benutze, wahrscheinlich nicht richtig aber es funktioniert, aber ich kann es nicht hinzufügen, die Farbe der gesamten Linie zu ändern.GTK3 + TextView fügt Textzeilen mit verschiedenen Farben pro Zeile hinzu

def logtostatus(self, text): 
    tvLog = self.tabs['Status'][1].get_children()[0].get_children()[0] 
    buf = tvLog.get_buffer() 
    start = buf.get_end_iter() 
    buf.insert(start, text+"\n") 
    end = buf.get_end_iter() 

Dieser Text einfügt, und ich hatte sich geweigert verschiedene Versionen versuchen TextTag zu gebrauchen, aber es so zu arbeiten, da ich aus Ideen heraus lief, bin ich für Sie da alle heraus zu fragen, helfen Sie bitte, das ist mir fahren Nüsse.

Danke

Antwort

2

Dies funktioniert für mich:

from gi.repository import Gtk 

class MainWindow(Gtk.Window): 
    def __init__(self): 
     super(MainWindow, self).__init__() 
     self.connect("destroy", lambda x: Gtk.main_quit()) 

     tb = Gtk.TextBuffer() 
     tv = Gtk.TextView(buffer = tb) 

     for color in ("red", "yellow", "green", "blue", "white"): 
      tb.insert_markup(
       tb.get_end_iter(), 
       '<span color="{:s}">This is a test message</span>\n'.format(color), 
       -1) 

     self.add(tv) 
     self.show_all() 

    def run(self): 
     Gtk.main() 


def main(args): 
    mainwdw = MainWindow() 
    mainwdw.run() 

    return 0 

if __name__ == '__main__': 
    import sys 
    sys.exit(main(sys.argv)) 

Es scheint der einfachste Weg, mit Farben zu spielen. Dies ist das Ergebnis:

enter image description here

+0

Funktioniert perfekt! Vielen Dank :) –

Verwandte Themen