from tkinter import * #from Tkinter import * import tkinter from tkinter import * from tkinter.filedialog import * import tkinter.messagebox import tkinter.ttk import os import sys class ShowList(Frame): def __init__(self, root): Frame.__init__(self, root) self.grid() self.draw_widgets() def BoxCheck (self, number) : return def draw_widgets(self): global aframe global canv cframe = Frame(self) cframe.grid(row=1, sticky=N+S+E+W) w = root.winfo_screenwidth() - 100 h = root.winfo_screenheight() - 100 canv = Canvas(cframe, width = w, height = h) canv.grid(row=0, column=0, sticky=N+S+E+W) vscroll = Scrollbar(cframe, orient=VERTICAL, command=canv.yview) hscroll = Scrollbar(cframe, orient=HORIZONTAL, command=canv.xview) vscroll.grid(row=0, column=1, sticky=N+S) hscroll.grid(row=1, column=0, sticky=E+W) canv["xscrollcommand"] = hscroll.set canv["yscrollcommand"] = vscroll.set aframe = Frame(canv) id = canv.create_window(0,0,window=aframe, anchor=N+W) for i in range(5000) : if i % 100 == 0 : value = tkinter.IntVar() lb = Label (aframe,text="label "+ str(i), padx = 30, anchor=N+W) lb.grid(row=i, column=0, sticky=W) canv.update_idletasks() elif i % 25 == 0 : value = tkinter.IntVar() b = Checkbutton(aframe, text="index " + str(i), anchor=N+W, fg="red", variable=value, command= lambda v1=i : self.BoxCheck(v1)) b.grid(row=i, column=0, padx = 0, sticky=W) canv.update_idletasks() else : value = tkinter.IntVar() b = Checkbutton(aframe, text="button "+ str(i)+ " " , anchor=N+W, variable=value, command= lambda v1=i : self.BoxCheck(v1)) b.grid(row=i, column=0, padx = 30, sticky=W) canv.update_idletasks() quit = Checkbutton(aframe, text="QUIT", anchor=N+W, fg="red", command=self.quit) quit.grid(row= i+2, padx=100, column = 5) canv.update_idletasks() canv["scrollregion"]=canv.bbox(ALL) canv.update_idletasks() rowNumber = 0 root = Tk() m=ShowList(root) root.mainloop()