Python GUI Tk : Common Dialog & Dialog
OK Cancel dialog
from Tkinter import * import math root = Tk() top = Frame(root) top.pack(side='top') hwtext = Label(top, text='Hello, World! The sine of') hwtext.pack(side='left') r = StringVar() r.set('1.2') r_entry = Entry(top, width=6, textvariable=r) r_entry.pack(side='left') s = StringVar() def comp_s(event): global s s.set('%g' % math.sin(float(r.get()))) # construct string r_entry.bind('<Return>', comp_s) compute = Label(top, text=' equals ') compute.pack(side='left') s_label = Label(top, textvariable=s, width=18) s_label.pack(side='left') import tkMessageBox def quit(event): if tkMessageBox.askokcancel('Quit','Do you really want to quit?'): root.destroy() root.bind('<q>', quit) root.mainloop()
Question dialog
from Tkinter import * from tkMessageBox import * from tkFileDialog import askopenfilename def callback(): askquestion('Warning', 'Line "quotation"\n Line 2 ?') errmsg = 'Error!' Button(text='Quit', command=callback).pack(fill=X) Button(text='Spam', command=(lambda: showerror('Spam', errmsg))).pack(fill=X) mainloop()
Error dialog
from Tkinter import * from tkMessageBox import * from tkFileDialog import askopenfilename def callback(): showerror('Error!', "Error") errmsg = 'Error!' Button(text='Quit', command=callback).pack(fill=X) Button(text='Spam', command=(lambda: showerror('Spam', errmsg))).pack(fill=X) mainloop()
Entry dialog
from Tkinter import * from tkMessageBox import * from tkColorChooser import askcolor from tkMessageBox import askquestion, showerror from tkSimpleDialog import askfloat from tkFileDialog import askopenfilename def callback(): askfloat('Entry', 'Input field') errmsg = 'Error!' Button(text='Quit', command=callback).pack(fill=X) Button(text='Spam', command=(lambda: showerror('Spam', errmsg))).pack(fill=X) mainloop()
File open dialog
from Tkinter import * from tkMessageBox import * from tkColorChooser import askcolor from tkFileDialog import askopenfilename def callback(): askopenfilename() errmsg = 'Error!' Button(text='Quit', command=callback).pack(fill=X) Button(text='Spam', command=(lambda: showerror('Spam', errmsg))).pack(fill=X) mainloop()
Color chooser dialog
from Tkinter import * from tkMessageBox import * from tkColorChooser import askcolor from tkFileDialog import askopenfilename def callback(): askcolor() errmsg = 'Error!' Button(text='Quit', command=callback).pack(fill=X) Button(text='Spam', command=(lambda: showerror('Spam', errmsg))).pack(fill=X) mainloop()
Buildin dialogs: warning dialog, info dialog and error dialog
from Tkinter import * from tkMessageBox import * def callback(): if askyesno('Verify', 'Quit?'): showwarning('Yes', 'Quit not yet implemented') else: showinfo('No', 'Quit has been cancelled') errmsg = 'Error!' Button(text='Quit', command=callback).pack(fill=X) Button(text='Spam', command=(lambda: showerror('Spam', errmsg))).pack(fill=X) mainloop()
YES NO CANCEL dialog
from Tkinter import * from Dialog import Dialog class OldDialogDemo(Frame): def __init__(self, master=None): Frame.__init__(self, master) Pack.config(self) # same as self.pack() Button(self, text='Pop1', command=self.dialog1).pack() Button(self, text='Pop2', command=self.dialog2).pack() def dialog1(self): ans = Dialog(self, title = 'Title!', text = 'text' 'and text "quotation".', bitmap = 'questhead', default = 0, strings = ('Yes', 'No', 'Cancel')) if ans.num == 0: self.dialog2() def dialog2(self): Dialog(self, title = 'title', text = "text", bitmap = 'hourglass', default = 0, strings = ('spam', 'SPAM')) if __name__ == '__main__': OldDialogDemo().mainloop()
Set Color
from Tkinter import * from tkColorChooser import askcolor def setBgColor(): (triple, hexstr) = askcolor() if hexstr: print hexstr push.config(bg=hexstr) root = Tk() push = Button(root, text='Set Background Color', command=setBgColor) push.config(height=3, font=('times', 20, 'bold')) push.pack(expand=YES, fill=BOTH) root.mainloop()
Customized dialog
from Tkinter import * from tkMessageBox import askyesno, showerror class NewDialogDemo(Frame): def __init__(self, master=None): Frame.__init__(self, master) Pack.config(self) self.createWidgets() def greet(self): print "hi" def createWidgets(self): Label(self, text='Label').pack(side=TOP) Button(self, text='Button 1', command=self.dialog1).pack() Button(self, text='Button 2', command=self.dialog2).pack() Button(self, text='Button 3', command=self.greet ).pack(side=LEFT) Button(self, text='Button 4', command=self.quit ).pack(side=RIGHT) def dialog1(self): ans = askyesno('Title!', 'Text') if ans: self.dialog2() def dialog2(self): showerror('Error title', "Text") if __name__ == '__main__': NewDialogDemo().mainloop()
A message box
from Tkinter import * root = Tk() root.title('Message') Message(root, text="Text Text Text Text Text Text Text Text Text Text " "Text Text Text Text Text Text Text Text Text Text Text Text Text " "Text Text Text Text Text Text Text Text Text Text Text Text Text " "Text Text Text Text Text Text Text Text Text Text Text Text Text " "Text Text Text Text Text Text Text Text Text Text Text Text Text " "Text Text Text Text .", bg='royalblue', fg='ivory', relief=GROOVE).pack(padx=10, pady=10) root.mainloop()
showwarning Dialog box
from Tkinter import * import tkMessageBox def a(): tkMessageBox.showwarning("Open file", "Cannot open this file\n") a()
Use message to alert an Exception
from Tkinter import * import tkMessageBox def a(): filename = "a.txt" try: fp = open(filename) except: tkMessageBox.showwarning( "Open file", "Cannot open this file\n(%s)" % filename ) return a()
OK cancel dialog box
from Tkinter import * import tkMessageBox tkMessageBox.askokcancel("Quit", "Do you really wish to quit?")
Creating a simple dialog
from Tkinter import * class MyDialog: def __init__(self, parent): top = self.top = Toplevel(parent) Label(top, text="Value").pack() self.e = Entry(top) self.e.pack(padx=5) b = Button(top, text="OK", command=self.ok) b.pack(pady=5) def ok(self): print "value is", self.e.get() self.top.destroy() root = Tk() d = MyDialog(root) root.wait_window(d.top)
Add components to a dialog
from Tkinter import * class MyDialog: def __init__(self, parent): top = self.top = Toplevel(parent) Label(top, text="Value").pack() self.e = Entry(top) self.e.pack(padx=5) b = Button(top, text="OK", command=self.ok) b.pack(pady=5) def ok(self): print "value is", self.e.get() self.top.destroy() root = Tk() #Button(root, text="Hello!").pack() #root.update() d = MyDialog(root) root.wait_window(d.top)
Get input value from a dialog
from Tkinter import * class MyDialog: def __init__(self, parent): top = self.top = Toplevel(parent) Label(top, text="Value").pack() self.e = Entry(top) self.e.pack(padx=5) b = Button(top, text="OK", command=self.ok) b.pack(pady=5) def ok(self): print "value is", self.e.get() self.top.destroy() root = Tk() d = MyDialog(root) root.wait_window(d.top)
Use message to alert an Exception
from Tkinter import * import tkMessageBox def a(): filename = "a.txt" try: fp = open(filename) except: tkMessageBox.showwarning( "Open file", "Cannot open this file\n(%s)" % filename ) return a()
Popup menu demonstration.
from Tkinter import * class PopupMenuDemo( Frame ): def __init__( self ): Frame.__init__( self ) self.pack( expand = YES, fill = BOTH ) self.master.title( "Popup Menu Demo" ) self.master.geometry( "300x200" ) self.frame1 = Frame( self, bg = "white" ) self.frame1.pack( expand= YES, fill = BOTH ) self.menu = Menu( self.frame1, tearoff = 0 ) colors = [ "White", "Blue", "Yellow", "Red", "Pink", "Gray", "Purple"] self.selectedColor = StringVar() self.selectedColor.set( colors[ 0 ] ) for item in colors: self.menu.add_radiobutton( label = item, variable = self.selectedColor, command = self.changeBackgroundColor ) self.frame1.bind( "<Button-3>", self.popUpMenu ) def popUpMenu( self, event ): self.menu.post( event.x_root, event.y_root ) def changeBackgroundColor( self ): self.frame1.config( bg = self.selectedColor.get() ) def main(): PopupMenuDemo().mainloop() if __name__ == "__main__": main()
Message Box
from Tkinter import * msg = Message(text="Text Text Text Text Text?") msg.config(bg='pink', font=('times', 16, 'italic')) msg.pack() mainloop()
Option Menu Demo
from Tkinter import * root = Tk() var1 = StringVar() var2 = StringVar() opt1 = OptionMenu(root, var1, 'A', 'B', 'C') opt2 = OptionMenu(root, var2, 'A', 'B', 'C') opt1.pack(fill=X) opt2.pack(fill=X) var1.set('A') var2.set('B') def state(): print var1.get(), var2.get() Button(root, command=state, text='state').pack() root.mainloop()