Thursday 15 September 2011

python - Tkinter grid height limitation -



python - Tkinter grid height limitation -

i need create table huge amount of rows ( more 2000 ). each row should able hold widgets. when seek add together entries after 1714th grid stops grow , next widgets drawn atop each other. issue seems related height of grid because if alter border width of entry value change.

import tkinter tk class example( tk.frame ): def __init__( self, root ): tk.frame.__init__( self, root ) self.canvas = tk.canvas( root, background = "#ffffff", borderwidth = 0 ) self.frame = tk.frame( self.canvas, background = "#ffffff" ) self.vsb = tk.scrollbar( root, orient = "vertical", command = self.canvas.yview ) self.canvas.configure( yscrollcommand = self.vsb.set ) self.vsb.pack( side = "right", fill = "y" ) self.canvas.pack( side = "left", fill = "both", expand = true ) self.canvas.create_window( ( 4, 4 ), window = self.frame, anchor = "nw", tags = "self.frame" ) self.frame.bind( "<configure>", self.on_frame_configure ) self.populate() def update( self ): self.frame.update() def add( self ): id in xrange( 2000 ): entry_id = tk.entry( self.frame, width = 10, justify = 'center', borderwidth = "1", relief = "solid", bg = '#c8d4fa' ) entry_id.grid( row = 1 + id, column = 0 ) entry_id.insert( 1, 1 + id ) def populate( self ): self.frame.grid_rowconfigure( 0, weight = 1 ) button = tk.button( self.frame, text = 'click', command = self.add ).grid( row = 0, column = 0 ) def on_frame_configure( self, event ): '''reset scroll part encompass inner frame''' self.canvas.configure( scrollregion = self.frame.bbox( 'all' ) ) #self.canvas.configure( scrollregion = self.canvas.grid ) def main(): root = tk.tk() illustration = example( root ) root.mainloop() if __name__ == '__main__': main()

python tkinter

No comments:

Post a Comment