Pmw.HistoryText() - ...
...
If None, a label component is not created. The default is None.
Otherwise, the size of the megawidget is determined by the width and height of the text component, along with the size and/or existence of the other components, such as the label, the scrollbars and the scrollmargin option. All these affect the overall size of the megawidget. The default is 0.
class Demo: def __init__(self, parent): # Create and pack the PanedWidget to hold the query and result # windows. # !! panedwidget should automatically size to requested size panedWidget = Pmw.PanedWidget(parent, orient = 'vertical', hull_height = 400, hull_width = 450) panedWidget.add('query', min = 0.05, size = 0.2) panedWidget.add('buttons', min = 0.1, max = 0.1) panedWidget.add('results', min = 0.05) panedWidget.pack(fill = 'both', expand = 1) # Create and pack the HistoryText. self.historyText = Pmw.HistoryText(panedWidget.pane('query'), text_wrap = 'none', text_width = 60, text_height = 10, statechangecmd = self.statechange, ) self.historyText.pack(fill = 'both', expand = 1) self.historyText.statechangecmd = self.statechange self.historyText.component('text').focus() buttonList = ( ['Prev', self.historyText.prev], ['Next', self.historyText.next], ['Search', Pmw.busycallback(self.search)], ['Clear', self.clear], ['Undo', self.historyText.undo], ['Redo', self.historyText.redo], ) self.buttonDict = {} for text, cmd in buttonList: button = Tkinter.Button(panedWidget.pane('buttons'), text = text, command = cmd) button.pack(side = 'left') self.buttonDict[text] = button for text in ('Prev', 'Next'): self.buttonDict[text].configure(state = 'disabled') self.results = Pmw.ScrolledText(panedWidget.pane('results'), text_wrap = 'none') self.results.pack(fill = 'both', expand = 1) def statechange(self, prevstate, nextstate): self.buttonDict['Prev'].configure(state = prevstate) self.buttonDict['Next'].configure(state = nextstate) def clear(self): self.historyText.delete('1.0', 'end') def addnewlines(self, text): if len(text) == 1: text = text + '\n' if text[-1] != '\n': text = text + '\n' if text[-2] != '\n': text = text + '\n' return text def search(self): sql = self.historyText.get() self.results.insert('end', self.addnewlines(sql)) self.results.see('end') self.results.update_idletasks() self.historyText.addhistory() deleteSemiColon = '[\n;]+$' results = 'foo' if len(results) > 0: self.results.insert('end', self.addnewlines(results)) self.results.see('end')
Home. Pmw 0.8.5 Maintainer gregm@iname.com. 9 Feb 2001