Python - einfügen einer neuen Zeile in Tkinter Label
Ich bin nicht in der Lage das einfügen einer neuen Zeile in der Ausgabe, die generiert wird mit Label
in Tkinter. Unten ist das Bild von meiner GUI, das erklärt mein problem.
Dies ist der code, den ich verwendet für die Definition von my label.
string1 = 'At pathID' + str(l.get('pathId'))+
'In label' + str(keys) +':'+
'profile in reference but not in copy' +
str(list(set(a_value)-set(b_value)))
ttk.Label(t.sub_frame, text=string1).pack(side="left", fill="x", expand=1)
, Was ich will:
Möchte ich eine neue Zeile am Anfang At path ID0 in label.....
Damit die Ausgabe im Etikett sollte wie folgt Aussehen und nicht wie dargestellt in einer Zeile oben in GUI Bild:
At path ID0 In label1: profile in reference but not in copy[(18,0,0)]
At path ID0 In label2: profile in reference but not in copy[(18,0,8)]
, Was ich versucht habe:
Die oben gezeigten Linien erzeugt in der Schleife, also habe ich versucht zu halten, neue-Zeile-Zeichen vor dem start der Linie, aber es zeigt nur die Ausgabe nächste Zeile noch halten es angebracht in einer Zeile.
string1 = '\n' + '\nAt pathID' + str(l.get('pathId'))+
'In label' + str(keys) +':'+
'profile in reference but not in copy' +
str(list(set(a_value)-set(b_value)))
Der Grund, warum ich davon ausgegangen war, dass bei jeder Schleife neue Zeile-Zeichen werden erkannt und ich kann jede Zeile, die gedruckt in newline. Könnt Ihr mir empfehlen etwas? Ich glaube, ich bin fehlt eine kleine Logik irgendwo
- Warum sind Sie mit
/n
? Ein Zeilenumbruch wird\n
. Versuchen Sie, diese in den interpreter:print('hello\nworld')
- sorry für das falsche Zeichen. In dem code, den ich verwende, richtig. durch Fehler, den ich verwendet
/n
hier. Lassen Sie mich Bearbeiten Sie Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich verstehe nicht, warum, aber wegen etwas, was, die Werte in
pack
wurden verursacht einige Probleme. Ich bearbeitete meinen code wie unten gezeigt. Jetzt seine Arbeit gut.ttk.Label(t.sub_frame, text=string1).pack()
Danke Euch für Eure Aufmerksamkeit.
pack()
in einer separaten Zeile auf eine Referenz des Objektes:label = ttk.Label(t.sub_frame, text=string1); label.pack()
.Vielleicht die Parameter inpack()
würde auf diese Weise funktionieren. Wenn Sie wissen, die Breite können Sie auch festlegenwraplength
Ihrer label:ttk.Label(parent, text="longtext..." wraplength=20)
diese brechen Ihren text automatisch nach der festgelegten Breite erreicht wird. Auch sollten Sie verwendenformat()
zur Formatierung Ihres strings finden Sie unter: clickmestring1 = 'At pathID {0} In label {1} : profile in reference but not in copy {2}'.format(l.get('pathId'), keys, list(set(a_value)-set(b_value)))
wraplength
weil die Länge der Zeichenkette ist nicht behoben.