1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| try:
import Tkinter as Tk
except:
import tkinter as Tk
class simpleapp_tk(Tk.Tk):
def __init__(self):
Tk.Tk.__init__(self)
self.vsb = Tk.Scrollbar(self, orient=Tk.VERTICAL)
self.vsb.grid(row=0, column=1, sticky=Tk.N+Tk.S)
self.hsb = Tk.Scrollbar(self, orient=Tk.HORIZONTAL)
self.hsb.grid(row=1, column=0, sticky=Tk.E+Tk.W)
self.canv = Tk.Canvas(self,
yscrollcommand=self.vsb.set,
xscrollcommand=self.hsb.set)
self.canv.grid(row=0, column=0, sticky=Tk.N+Tk.S+Tk.E+Tk.W)
self.vsb.config(command=self.canv.yview)
self.hsb.config(command=self.canv.xview)
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
self.frm = Tk.Frame(self.canv)
for x in range(10):
for y in range(10):
Tk.Label(self.frm,
text="x%d, y%d"% (x, y),
bg='white').grid(row=y,
column=x,
padx=5,
pady=5,
ipadx=2,
ipady=2)
self.canv.create_window(0, 0, window=self.frm)
self.frm.update()
self.canv.config(scrollregion=self.canv.bbox(Tk.ALL))
self.canv.yview_moveto(0)
self.canv.xview_moveto(0)
self.geometry("%dx%d"% (self.frm.winfo_reqwidth()+
self.vsb.winfo_width(),
self.frm.winfo_reqheight()+
self.hsb.winfo_height()))
self.bind("<Configure>", self.on_config)
def on_config(self, event=None):
if self.winfo_width() > self.frm.winfo_reqwidth():
self.hsb.grid_forget()
else:
self.hsb.grid(row=1, column=0, sticky=Tk.E+Tk.W)
if self.winfo_height() > self.frm.winfo_reqheight():
self.vsb.grid_forget()
else:
self.vsb.grid(row=0, column=1, sticky=Tk.N+Tk.S)
if __name__ == "__main__":
app = simpleapp_tk()
app.title("test: scroll or not scroll")
app.mainloop() |
Partager