Ändern der Größe eines Scrolled Tkinter Textfeldes

Ich möchte, dass ich ein gescrolltes Tkinter-Textfeld ausführe, das den maximal zulässigen Platz füllt. Ich habe es funktionieren …

Aus irgendeinem Grund, wenn ich das Fenster ausdehne, ist das Text-Widget in Ordnung; Allerdings erhält die Scroll-Bar eine Tonne Polsterung auf der x-Achse.

Das zweite Problem ist, wenn ich das Fenster schrumpfe die Scrollbar geht auf dem Bildschirm.

Wer kennt die Lösungen für diese beiden Programme?

Snippet:

self.Fr = Tkinter.Frame(self, width=self.Wi, height=self.He) self.Fr.pack(side='right', fill='both', expand='yes') self.Te = Tkinter.Text(self.Fr, font=self.Fo, fg=self.FG, bg=self.BG, selectforeground=self.SFG, selectbackground=self.SBG, insertbackground=self.IBG, wrap='word', undo=True, maxundo=100) #self.Te.grid(column=0, row=0, sticky='NSEW') self.Te.pack(side='left', fill='both', expand='yes') self.Sc = Tkinter.Scrollbar(self.Fr, elementborderwidth=1) #self.Sc.grid(column=1, row=0, sticky='NSEW') self.Sc.pack(side='right', fill='both', expand='yes') self.Te.configure(yscrollcommand=self.Sc.set) self.Sc.configure(command=self.Te.yview) 

One Solution collect form web for “Ändern der Größe eines Scrolled Tkinter Textfeldes”

Ihre Scrollbar bekommt alle Polsterung, weil Sie fill='both' . Auch wenn es sich um eine vertikale Bildlaufleiste handelt, bat man darum, auf der x-Achse zusätzlichen Platz zu nehmen, was zu einer Auffüllung führt, da sich die Scrollbar selbst nicht strecken wird, um eine breite Scrollbar zu machen. Sie wollen vertikale Scrollbars, um nur die Y-Richtung und die horizontalen zu füllen, um die X-Richtung zu füllen.

Wie die Scrollbar aus dem Bildschirm, das ist ein wenig komplex zu erklären, aber es hat eine einfache Lösung.

Das Problem ist das: Wenn du ein Fenster schlägt, das von pack zu einem Punkt verwaltet wird pack an dem es kleiner ist als das, was von den Widgets benötigt wird, beginnt es, Widgets zu beschneiden. Die Art, wie dies funktioniert, verarbeitet die Widgets in Ordnung, verlegt das Fenster und verteilt dann jegliche übrig gebliebenen Räume für alle verbleibenden Widgets. Dies bedeutet, dass, wenn ein Widget früh in der Reihenfolge nimmt alle die restlichen visuellen Raum, werden alle späteren Widgets nicht erscheinen.

Die oben genannte "Bestellung" ist die Reihenfolge der Verpackungsliste. Speziell die Reihenfolge, in der die Artikel verpackt wurden. Also, wenn du das Text-Widget packst und dann die Scrollbar Tk zuerst das Text-Widget auslegt und jeder Restplatz der Scrollbar zugewiesen wird. WENN Sie die Scrollbar zuerst gepackt haben, würde es ausgelegt und jeder Restraum würde dem Text-Widget gegeben werden.

Es klingt alles sehr kompliziert, aber das coole Ding ist, dass wenn man Dinge in der richtigen Reihenfolge packt, funktioniert alles nur.

Die allgemeine Faustregel ist also, um sicherzustellen, dass das letzte Widget, das du packst, dasjenige ist, auf das es sich expand hat. Dies ist dein "elastisches" Widget. Auf diese Weise werden alle festen Größe Widgets nehmen, was Platz sie zuerst brauchen, und Ihr "elastisches" Widget wird alles aufnehmen, was übrig ist.

Es gibt eine andere Lösung, die deinem Text-Widget eine gewünschte Breite und Höhe von einem geben soll. Mit dem, wenn der Packer zunächst Platz verteilt, wird er nur wenig Platz zuteilen. Also, wenn das Fenster schrumpft das Text-Widget wird schrumpfen, bis es auf diese winzige Größe kommt. Das ist aber nicht sehr praktisch, denn eines der großartigen Features der Packung ist, dass man allen Widgets ihre natürliche Größe geben kann (oder sie nehmen ihre natürliche Größe auf ihren Inhalt im Falle von Knöpfen und Etiketten an) und der Packer macht alles die Arbeit. Wenn Sie die Breite und die Höhe auf eins setzen, wird Ihr Anfangsfenster (sofern nicht explizit auf eine größere Größe eingestellt) ziemlich klein sein.

Dieses Verhalten ist in der Manpage für Pack dokumentiert, obwohl man es wirklich genau lesen muss, um dieses Verhalten vollständig zu erfassen.

  • Einfache animation mit tkinter
  • Wie kann ich einen Fortschrittsbalken mit einer Funktion verbinden?
  • Python 2.7.x Tkinter Popup-Menü werfen tclError
  • Python, Tkinter - Einfügen von Text in Leinwandfenster
  • Wie man das ganze Fenster zu einem Platz auf dem Bildschirm bewegt (Tkinter, Python3)
  • Ausblenden von Achsenbeschriftungen
  • Tkinter loop und serial schreiben
  • Einfrieren der Header in einem Raster mit einer Scrollbar in Tkinter
  • Versuche, ein einfaches Bild in ein Label zu bringen
  • Wie erstelle ich mehrere Checkboxen aus einer Liste in einer for-Schleife in python tkinter
  • Setzen von Gif-Bild in eine Leinwand mit Tkinter
  • Python ist die beste Programmiersprache der Welt.