Python GUI Tk : Timer & StatusBar MessageField & ScrollBar
Label clock
import Tkinter import time curtime = '' clock = Tkinter.Label() clock.pack() def tick(): global curtime newtime = time.strftime('%H:%M:%S') if newtime != curtime: curtime = newtime clock.config(text=curtime) clock.after(200, tick) tick() clock.mainloop()
Clock event
import Tkinter import time curtime = '' clock = Tkinter.Label() clock.pack() def tick(): global curtime newtime = time.strftime('%H:%M:%S') if newtime != curtime: curtime = newtime clock.config(text=curtime) clock.after(200, tick) tick() clock.mainloop()
Message as a status bar
from Tkinter import * class AllTkinterWidgets: def __init__(self, master): frame = Frame(master, width=500, height=400, bd=1) frame.pack() iframen = Frame(frame, bd=2, relief=FLAT) Message(iframen, text='This is a Message widget', width=300, relief=SUNKEN).pack(fill=X, padx=5) iframen.pack(expand=1, fill=X, pady=10, padx=5) root = Tk() #root.option_add('*font', ('verdana', 10, 'bold')) all = AllTkinterWidgets(root) root.title('Tkinter Widgets') root.mainloop()
Message Field
from Tkinter import * class AllTkinterWidgets: def __init__(self, master): frame = Frame(master, width=500, height=400, bd=1) frame.pack() iframen = Frame(frame, bd=2, relief=FLAT) Message(iframen, text='This is a Message widget', width=300, relief=SUNKEN).pack(fill=X, padx=5) iframen.pack(expand=1, fill=X, pady=10, padx=5) root = Tk() #root.option_add('*font', ('verdana', 10, 'bold')) all = AllTkinterWidgets(root) root.title('Tkinter Widgets') root.mainloop()
Scrolled List
from Tkinter import * class ScrolledList(Frame): def __init__(self, options, parent=None): Frame.__init__(self, parent) self.pack(expand=YES, fill=BOTH) self.makeWidgets(options) def handleList(self, event): index = self.listbox.curselection() label = self.listbox.get(index) self.runCommand(label) def makeWidgets(self, options): sbar = Scrollbar(self) list = Listbox(self, relief=SUNKEN) sbar.config(command=list.yview) list.config(yscrollcommand=sbar.set) sbar.pack(side=RIGHT, fill=Y) list.pack(side=LEFT, expand=YES, fill=BOTH) pos = 0 for label in options: list.insert(pos, label) pos = pos + 1 list.bind('<Double-1>', self.handleList) self.listbox = list def runCommand(self, selection): print 'You selected:', selection if __name__ == '__main__': options = map((lambda x: 'Lumberjack-' + str(x)), range(20)) ScrolledList(options).mainloop()
Scrolled Canvas
from Tkinter import * class ScrolledCanvas(Frame): def __init__(self, parent=None, color='brown'): Frame.__init__(self, parent) self.pack(expand=YES, fill=BOTH) canv = Canvas(self, bg=color, relief=SUNKEN) canv.config(width=300, height=200) canv.config(scrollregion=(0,0,300, 1000)) canv.config(highlightthickness=0) sbar = Scrollbar(self) sbar.config(command=canv.yview) canv.config(yscrollcommand=sbar.set) sbar.pack(side=RIGHT, fill=Y) canv.pack(side=LEFT, expand=YES, fill=BOTH) for i in range(10): canv.create_text(150, 50+(i*100), text='spam'+str(i), fill='beige') canv.bind('<Double-1>', self.onDoubleClick) # set event handler self.canvas = canv def onDoubleClick(self, event): print event.x, event.y print self.canvas.canvasx(event.x), self.canvas.canvasy(event.y) if __name__ == '__main__': ScrolledCanvas().mainloop()