Frage

Ist es möglich, ein mehrzeiliges Etikett mit Zeilenumbruch zu erzeugen, die mit der Breite der übergeordneten synchron ändern die Größe? Mit anderen Worten: der Editor die wordwrap Verhalten, wie Sie die Breite der Editor-Fenster ändern.

Der Anwendungsfall ist ein Dialog, braucht einen Block von mehrzeiligen Text (Anweisungen) in ihrer Gesamtheit darzustellen der Text abgeschnitten, ohne oder mit Bildlaufleisten zurückzugreifen. Der übergeordnete Container genügend vertikalen Raum hat schmale Breite aufzunehmen.

Ich habe mit Tkinter Label-und Message-Widgets zu experimentieren und TTK Label-Widget ohne Erfolg. Es scheint, dass ich zu hart Code benötigen ein Pixel wraplength Wert gegen diese Kontrollen Auto wordwrap haben, wenn ihr Text den rechten Rand ihrer Behälter erreicht. Sicherlich Tkinters Geometry-Manager kann mir helfen, meine Etiketten automatisch die Größe und ihre wraplength Werte entsprechend aktualisieren?

Soll ich im Text suchen Widget statt? Wenn ja, ist es möglich, die Grenze eines Text-Widget zu verstecken, damit ich es als ein mehrzeiliges Etikett mit wordwrap verwenden kann?

Hier ist ein Prototyp, wie könnte man tun, was ich oben beschrieben. Es wurde von Bryan Oakley Spitze inspiriert auf Stackoverflow den Text-Widget und die folgende Post zu verwenden:

Andere Tipps

Verwenden Sie Message Widget :

  

Die Nachricht Widget eine Variante des Label ist, entworfen mehrzeilige Nachrichten anzuzeigen. Die Nachricht Widget Text wickeln kann, und stellen Sie die Breite eines gegebenen Seitenverhältnis beizubehalten.

Hier ist der Code:

entry = Label(self, text=text,
    anchor=NW, justify=LEFT,
    relief=RIDGE, bd=2)
def y(event, entry=entry):
  # FIXME: make this a global method, to prevent function object creation
  # for every label.
  pad = 0
  pad += int(str(entry['bd']))
  pad += int(str(entry['padx']))
  pad *= 2
  entry.configure(wraplength = event.width - pad)
entry.bind("<Configure>", y )
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top