ich versuche, ein tkinter.Frame
zu haben, die ein Vollbild haben und einige Tasten darunterTkinter rekursive Verhalten mit ‚<Configure>‘ Rückruf
WIDTH, HEIGHT = 800, 600
root = Tk()
mainframe = Frame(root, padding="3 3 12 12")
mainframe.pack(fill=BOTH, expand=True)
infovariable = StringVar()
infovariable_label = Label(mainframe, textvariable=infovariable, anchor=S)
infovariable_label.pack(fill=X, side=TOP)
label = Label(mainframe)
label.pack(fill=BOTH, expand=True)
image_base = Image.open('hello.jpg')
# setting the photo
image = (image_base
.resize(2500, 1000)
.crop(0, 0, WIDTH,HEIGHT))
label.configure(image=photo)
Wenn ich ein Fenster Resize tun, ich mein Foto mag gleich sein Abmessungen (Breite/Höhe), wenn ich, dass:
def onResize(event):
global WIDTH, HEIGHT
WIDTH = event.width
HEIGHT = max(0, event.height - 50)
# setting the photo
image = (image_base
.resize(2500, 1000)
.crop(0, 0, WIDTH,HEIGHT))
root.bind('<Configure>', onResize)
die Größe ändern, um die Größe Bildänderung macht, dann wieder das Resize nennen, mit einem Fenster, das stufenlos ändert die Größe.
Ich habe das gleiche Problem wie dieses Thema:
odd behavior with '<Configure>' callback
Ich würde die Grenze und die Hierarchie der gui (Anwendung Grenze und Polsterung zu jedem Kinder) nicht berechnen wollen. Gibt es keine Möglichkeit, ein Widget mit voller Breite zu erhalten, das ein Bild automatisch die Breite des Containers hat? –
Die Hierarchie der Bindungen ist auch der Grund, warum Sie in einem Event-Handler manchmal 'return 'break" 'sehen. Die Zeichenfolge "break" bricht aus der Bindungshierarchie aus. – Gary02127
@RobertVandenEynde: nein. Tkinter-Bilder funktionieren nicht so. Sie müssen das tun, was Sie tun - Änderungen in der Größe des Widgets erkennen, die richtige Größe berechnen und dann die Größe des Bildes erzwingen. –