Das folgende ist ein Beispiel für Auto versteckt Bildlaufleisten, das funktioniert nur, wenn Sie nur die Raster Manager Geometrie verwenden, aus der Dokumentation effbot.org
genommen:
from tkinter import *
class AutoScrollbar(Scrollbar):
# A scrollbar that hides itself if it's not needed.
# Only works if you use the grid geometry manager!
def set(self, lo, hi):
if float(lo) <= 0.0 and float(hi) >= 1.0:
# grid_remove is currently missing from Tkinter!
self.tk.call("grid", "remove", self)
else:
self.grid()
Scrollbar.set(self, lo, hi)
def pack(self, **kw):
raise TclError("cannot use pack with this widget")
def place(self, **kw):
raise TclError("cannot use place with this widget")
# create scrolled canvas
root = Tk()
vscrollbar = AutoScrollbar(root)
vscrollbar.grid(row=0, column=1, sticky=N+S)
hscrollbar = AutoScrollbar(root, orient=HORIZONTAL)
hscrollbar.grid(row=1, column=0, sticky=E+W)
canvas = Canvas(root, yscrollcommand=vscrollbar.set, xscrollcommand=hscrollbar.set)
canvas.grid(row=0, column=0, sticky=N+S+E+W)
vscrollbar.config(command=canvas.yview)
hscrollbar.config(command=canvas.xview)
# make the canvas expandable
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
# create canvas contents
frame = Frame(canvas)
frame.rowconfigure(1, weight=1)
frame.columnconfigure(1, weight=1)
rows = 5
for i in range(1, rows):
for j in range(1, 10):
button = Button(frame, text="%d, %d" % (i,j))
button.grid(row=i, column=j, sticky='news')
canvas.create_window(0, 0, anchor=NW, window=frame)
frame.update_idletasks()
canvas.config(scrollregion=canvas.bbox("all"))
root.mainloop()
Ich glaube nicht, dieses Problem ist relevant. Ich habe gerade Python 2.6.6 für Windows heruntergeladen, und es kommt mit Tix. Es scheint also genauso gut zu funktionieren wie Tkinter. –
Danke! Das war eine große Hilfe. – reckoner
Ich habe versucht, den Code in dieser Antwort in seine eigene wiederverwendbare "Klasse" umzuwandeln, war aber nicht erfolgreich. Wenn Sie einen Moment haben, um meine Frage hier zu sehen, würde ich es wirklich schätzen: http://stackoverflow.com/questions/30018148/python-tkinter-frame-class-with-autohiding-scroll-bars Auch, Rinzler Warum haben Sie diesen Code als Bearbeitung und nicht als eigenständige Antwort veröffentlicht? Die vorhandenen Kommentare von 2010 machen jetzt keinen Sinn, und der von mir vereidigte Vertreter, der diesen Code aktualisiert hat, wird stattdessen zum Berichterstatter, der nichts mit dem Code zu tun hat. Sie sollten eine neue Antwort posten und dann Ihre Änderungen rückgängig machen. – ArtOfWarfare