import os, pickle, time, locale from tkinter import * import tkinter.tix from tkinter.ttk import * import tkinter.filedialog import tkinter.messagebox, traceback import gettext class CntlrWinMain (): def __init__(self, parent): super().__init__() self.parent = parent windowFrame = Frame(self.parent) self.statusbar = Label(windowFrame, text="Loading messages in listbox...", anchor=W) self.statusbar.grid(row=2, column=0, columnspan=2, sticky=EW) logFrame = Frame(windowFrame) logFrame.grid(row=0, column=0, sticky=(N, S, E, W)) logScrollbar = Scrollbar(logFrame, orient=VERTICAL) self.logListBox = Listbox(logFrame, yscrollcommand=logScrollbar.set) self.logListBox.grid(row=0, column=0, sticky=(N, S, E, W)) self.logListBox.focus_set() logScrollbar["command"] = self.logListBox.yview logScrollbar.grid(row=0, column=1, sticky=(N,S)) windowFrame.grid(row=0, column=0, sticky=(N,S,E,W)) windowFrame.columnconfigure(0, weight=999) windowFrame.columnconfigure(1, weight=1) windowFrame.rowconfigure(0, weight=1) windowFrame.rowconfigure(1, weight=999) windowFrame.rowconfigure(2, weight=1) logFrame.columnconfigure(0, weight=1) logFrame.rowconfigure(0, weight=1) window = self.parent.winfo_toplevel() window.columnconfigure(0, weight=1) window.rowconfigure(0, weight=1) self.parent.geometry() self.parent.title(_("messages list box testcase")) # add many log lines for i in range(500): message = "line {0:n}".format(i + .00001 * i) self.logListBox.insert(END, message) application = Tk() locale.setlocale(locale.LC_ALL, '') gettext.install("test") cntlrWinMain = CntlrWinMain(application) application.protocol("WM_DELETE_WINDOW") application.mainloop()