Listbox + scrollbar refresh problem
eg
ergeorge at worldnet.att.net
Tue Dec 18 12:06:08 EST 2001
More information about the Python-list mailing list
Tue Dec 18 12:06:08 EST 2001
- Previous message (by thread): gmpy / binary()
- Next message (by thread): Inheriting Python modules?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Ok, I have a listbox & scrollbar tied together as described in the pythonware documentation.(http://www.pythonware.com/library/tkinter/introduction/x5453-patterns.htm) I also have a polling method setup with after() function so that my listbox is refreshed every few seconds The problem is that I can't seem to preserve the listbox view over the refresh. I can use the listbox.see() function to make sure the current selection is visible, but the scrolled position moves. It seems I should be able to make this happen by saving the scrollbar position with: scroll=scrollbar.get() before I clear & reload the listbox, and then restore it after the new data is loaded: scrollbar.set(scroll[0], scroll[1]) But it doesn't work!?! I've pasted an example below. Any help is appreciated! Eric ################################################################# #!/usr/bin/python2 import sys import os import glob import time import string from Tkinter import * class Example1: def __init__(self): self.root = root = Tk() self.root.minsize(300, 200) self.row = 0 self.root.rowconfigure(0, weight=1) self.root.columnconfigure(0, weight=1) self.root.columnconfigure(1, weight=0) self.listbox = Listbox(root, selectmode=SINGLE) self.listbox.grid(column=0, sticky=E+W+N+S) self.scrollbar = Scrollbar(root, orient=VERTICAL) self.scrollbar.grid(row = self.row, column = 1, sticky=W+N+S) self.scrollbar.config(command=self.listbox.yview) self.listbox.config(yscrollcommand=self.scrollbar.set, font='courier') self.load_data() self.poll(5000) root.mainloop() def poll(self, interval): self.load_data() self.root.after(interval, self.poll, interval) def load_data(self): select = self.listbox.curselection() scroll = self.scrollbar.get() print "Scroll: ", scroll self.listbox.delete(0, END) for i in range(20): self.listbox.insert('end', `i`) if len(select): self.listbox.select_set(int(select[0])) self.listbox.see(int(select[0])) self.scrollbar.set(scroll[0], scroll[1]) x = Example1()
- Previous message (by thread): gmpy / binary()
- Next message (by thread): Inheriting Python modules?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list