Problem mit der unteren Fensterkante
Verfasst: Montag 30. August 2021, 23:13
Hallo,
ich hänge seit Tagen an diesem Problem fest und würde mich freuen, wenn mir jemand einen Hinweis in die richtige Richtung geben könnte!
Ich habe diesen Code:
Das wird auch alles sehr schön gezeichnet und wenn ich die Fenstergröße mit der Maus in horizontale Richtung ändere, passen sich die horizontale Ausdehnung der unteren Scrollbar und des Canvas an die neuen Fenstermaße an. In vertikale Richtung funktioniert das aber nicht. Wenn ich das Fenster nach unten vergrößere, entsteht eine graue Fläche unterhalb der Scrollbar. Wenn ich das Fenster verkleinere, wird am unteren Rand abgeschnitten. Ich habe schon alles mögliche ausprobiert, was man so im Internet findet, aber ich habe weder eine Lösung noch eine Erkärung finden können. (u.a. auch eine Version mit pack. Da ist es genauso.)
Interessanterweise liefert das Ziehen am unteren Fensterrand mit der Maus auch kein <Configure>-Event (der auskommentierte Teil im Code). Wenn ich rechts oder links ziehe, werden sowohl Höhe als auch Breite zurückgegeben, wenn ich unten oder oben ziehe, weder das eine noch das andere.
Vielen Dank und viele Grüße
Thorsten
ich hänge seit Tagen an diesem Problem fest und würde mich freuen, wenn mir jemand einen Hinweis in die richtige Richtung geben könnte!
Ich habe diesen Code:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import tkinter as tk
class App(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.config(background="yellow")
self.cv = tk.Canvas(self, background="bisque",width=500, height=500)
# def resize(event):
# w,h = event.width, event.height
# print ('W ' + str(w))
# print ('H ' + str(h))
# self.cv.config(width=w)
#self.cv.bind('<Configure>', resize)
self.xsb = tk.Scrollbar(self, orient="horizontal", command=self.cv.xview)
self.ysb = tk.Scrollbar(self, orient="vertical", command=self.cv.yview)
self.cv.configure(yscrollcommand=self.ysb.set, xscrollcommand=self.xsb.set)
self.cv.grid(row=0, column=0, sticky="nsew")
self.xsb.grid(row=1, column=0, sticky="ews")
self.ysb.grid(row=0, column=1, sticky="nse")
self.grid_rowconfigure(0, weight=2)
self.grid_columnconfigure(0, weight=2)
if __name__ == "__main__":
root = tk.Tk()
app = App(root)
app.grid(row=0, column=0, sticky="nsew")
root.grid_columnconfigure(0, weight=1)
root.mainloop()
Interessanterweise liefert das Ziehen am unteren Fensterrand mit der Maus auch kein <Configure>-Event (der auskommentierte Teil im Code). Wenn ich rechts oder links ziehe, werden sowohl Höhe als auch Breite zurückgegeben, wenn ich unten oder oben ziehe, weder das eine noch das andere.
Vielen Dank und viele Grüße
Thorsten