tkinter GUI full

Tk button with onClick event
To create a Tkinter window with a button use the example below.  The program enters mainloop()  which wait for events (user actions). We define the button which has a callback to the function callback().   master is the root window, the window where your button will appear in.

from Tkinter import *
 
master = Tk()
 
def callback():
    print "click!"
 
b = Button(master, text="OK", command=callback)
b.pack()
 
mainloop()
tk button
tk button

Tk image button
If you want an image button, use the PhotoImage class. We set the size of the window and the miminum size with the functions minsize() and geometry(). Example:
from Tkinter import *
 
master = Tk()
master.minsize(300,100)
master.geometry("320x100")
 
def callback():
    print "click!"
 
 
photo=PhotoImage(file="add.png")
b = Button(master,image=photo, command=callback, height=50, width=150)
b.pack()
 
mainloop()
Result:
tk image button
tk image button
Tk Image button with text label
If you want both an image and text, simply add the parameter compound=LEFT.

from Tkinter import *
 
master = Tk()
master.minsize(300,100)
master.geometry("320x100")
 
def callback():
    print "click!"
 
 
photo=PhotoImage(file="add.png")
b = Button(master,image=photo, text="OK", command=callback, height=50, width=150, compound=LEFT)
b.pack()
 
mainloop()

Result:
tk button with text and image
tk button with text and image
Button location
If you want to place the button on your coordinates do not use the pack() function but instead use the function place(x,y), as shown in the example below:

from Tkinter import *
 
master = Tk()
master.minsize(300,100)
master.geometry("320x100")
 
def callback():
    print "click!"
 
 
photo=PhotoImage(file="add.png")
b = Button(master,image=photo, text="OK", command=callback, height=50, width=150, compound=LEFT)
b.place(x = 20, y = 20)
 
mainloop()
Result:
tk button location
tk button location


TKINTER MENUBAR



The Tkinter toolkit comes with all the basic widgets to create graphical applications. Almost every app has a main menu. As expected, Tkinter supports adding a main menu to your application window.
The screenshot below demonstrates a Tkinter based menu:
tk menu
Tkinter menu



You can create a simle menu with Tkinter using the code below. Every option (new, open, save.. ) should have its own callback.
from Tkinter import *
 
def donothing():
   x = 0
 
root = Tk()
 
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=donothing)
filemenu.add_command(label="Open", command=donothing)
filemenu.add_command(label="Save", command=donothing)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
 
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help Index", command=donothing)
helpmenu.add_command(label="About...", command=donothing)
menubar.add_cascade(label="Help", menu=helpmenu)
 
root.config(menu=menubar)
root.mainloop()
We create the menubar with the call:
menubar = Menu(root)
where root is a Tk() object.
A menubar may contain zero or more submenus such as the file menu, edit menu, view menu, tools menu etcetera.
A submenu can be created using the same Menu() call, where the first argument is the menubar to attach to.
filemenu = Menu(menubar, tearoff=0)
menu = Menu(menubar, tearoff=0)
Individual options can be added to these submenus using the add_command() method:

filemenu.add_command(label="New", command=donothing)
filemenu.add_command(label="Open", command=donothing)
filemenu.add_command(label="Save", command=donothing)

In the example we created the callback function donothing() and linked every command to it for simplicity. An option is added using the add_comment() function. We call add_cascade() to add this menu list to the specific list.



TKINTER WIDGETS



Tk widgets

Tkinter has several widgets including:
  • Label
  • EditText
  • Images
  • Buttons (Discussed before)
In this article we will show how to use some of these Tkinter widgets. Keep in mind there’s a slight difference between Tkinter for Python 2.x and 3.x

Label
To create a label we simply call the Label() class and pack it.  The numbers padx and pady are the horizontal and vertical padding.
from Tkinter import *
 
root = Tk()
root.title('Python Tk Examples @ pythonspot.com')
Label(root, text='Python').pack(pady=20,padx=50)
 
root.mainloop()
EditText (Entry widget)
To get user input you can use an Entry widget.
from Tkinter import *
 
root = Tk()
root.title('Python Tk Examples @ pythonspot.com')
 
var = StringVar()
textbox = Entry(root, textvariable=var)
textbox.focus_set()
textbox.pack(pady=10, padx=10)
 
root.mainloop()
Result:
tk entry
tk entry
Images
Tk has a widget to display an image, the PhotoImage.  It is quite easy to load an image:
from Tkinter import *
import os
 
root = Tk()
img = PhotoImage(file="logo2.png")
panel = Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
root.mainloop()
Result:
python tk image
python tk image



TKINTER MESSAGE BOX



The Tkinter tkMessageBox has various methods to display a message box.
There is a slight difference between Tkinter for Python 2.7 and Python 3.
To find your Python version try one of these commands:
python --version
python3 --version
Related courses
Tkinter GUI Application Development Projects

Tkinter Message box

Tkinter Message box
TkMessage box
To show a minimalistic Tkinter message box, use the function showinfo() where the parameters are the window title and text.
The showinfo() function is in a different module depending on the Python version.
Python 3.x
from tkinter import messagebox
 
messagebox.showinfo("Title", "a Tk MessageBox")
Python 2.7
import Tkinter
import tkMessageBox
 
tkMessageBox.showinfo("Title", "a Tk MessageBox")

Tkinter showerror, showwarning and showinfo

tkinter-dialog
Tk messagebox dialog
Tkinter includes several other message boxes:
  • showerror()
  • showwarning()
  • showinfo()
Python 3.x
import tkinter
from tkinter import messagebox
 
# hide main window
root = tkinter.Tk()
root.withdraw()
 
# message box display
messagebox.showerror("Error", "Error message")
messagebox.showwarning("Warning","Warning message")
messagebox.showinfo("Information","Informative message")
Python 2.7
import Tkinter
import tkMessageBox
 
# An error box
tkMessageBox.showerror("Error","No disk space left on device")
 
# A warning box 
tkMessageBox.showwarning("Warning","Could not start service")
 
# An information box
tkMessageBox.showinfo("Information","Created in Python.")



TKFILE DIALOGUE MODULE IN TKINTER




tkFileDialog is a module with open and save dialog functions.
 Instead of implementing those in Tkinter GUI on your own


Overview
An overview of file dialogs:
FunctionParametersPurpose
.askopenfileDirectory, Title, ExtensionTo open file: Dialog that requests selection of an existing file.
.asksaveasfilenameDirectory, Title, Extension)To save file: Dialog that requests creation or replacement of a file.
.askdirectoryNoneTo open directory

Tkinter Open File

The askopenfile function to creates an file dialog object. The extensions are shown in the bottom of the form (Files of type). The code below will simply show the dialog and return the filename.  If a user presses cancel the filename is empty. On a Windows machine change the initialdir to “C:\”.
Python 2.7 version:
from Tkinter import *from Tkinter import *
import Tkinter, Tkconstants, tkFileDialog
 
root = Tk()
root.filename = tkFileDialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
print (root.filename)
Python 3 version:
from tkinter import filedialog
from tkinter import *
 
root = Tk()
root.filename =  filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
print (root.filename)
Here is an example (on Linux):
tkfiledialog Tkinter askopenfile
tkfiledialog Tkinter askopenfile

Tkinter Save File

The asksaveasfilename function prompts the user with a save file dialog.
Python 2.7 version
from Tkinter import *
import Tkinter, Tkconstants, tkFileDialog
 
root = Tk()
root.filename = tkFileDialog.asksaveasfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
print (root.filename)
Python 3 version
from tkinter import filedialog
from tkinter import *
 
root = Tk()
root.filename =  filedialog.asksaveasfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
print (root.filename)

Tkinter Open Directory

The askdirectory presents the user with a popup for directory selection.
Python 2.7 version
from  Tkinter import *
import Tkinter, Tkconstants, tkFileDialog
root = Tk()
root.directory = tkFileDialog.askdirectory()
print (root.directory)
tkinter-askdirectory
tkinter askdirectory

TKINTER DRODOWNS



Tkinter supports dropdown menus. This is similar to your standard combobox on your operating system.
The widget is called OptionMenu and the parameters you need are: frame, tk variable and a dictionary with choices.
tk dropdown menu

Tkinter dropdown example

The example below creates a Tkinter window with a combobox.
from Tkinter import *
import Tkinter as ttk
from ttk import *
 
root = Tk()
root.title("Tk dropdown example")
 
# Add a grid
mainframe = Frame(root)
mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
mainframe.pack(pady = 100, padx = 100)
 
# Create a Tkinter variable
tkvar = StringVar(root)
 
# Dictionary with options
choices = { 'Pizza','Lasagne','Fries','Fish','Potatoe'}
tkvar.set('Pizza') # set the default option
 
popupMenu = OptionMenu(mainframe, tkvar, *choices)
Label(mainframe, text="Choose a dish").grid(row = 1, column = 1)
popupMenu.grid(row = 2, column =1)
 
# on change dropdown value
def change_dropdown(*args):
    print( tkvar.get() )
 
# link function to change dropdown
tkvar.trace('w', change_dropdown)
 
root.mainloop()
It starts by creating a Tk object and pass it to a tkinter frame created with Frame()
root = Tk()
root.title("Tk dropdown example")
mainframe = Frame(root)
A grid is added to the frame which will hold the combo-box.
mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
mainframe.pack(pady = 100, padx = 100)
The popup menu contains a list of options which is defined in the variable choices.
A Tkinter variable is created with the line:
tkvar = StringVar(root)
The default value of the variable is set with the .set() method.
We create the Tkinter combobox with:
popupMenu = OptionMenu(mainframe, tkvar, *choices)
And link the callback method change_dropdown to this combobox.




Comments

Popular posts from this blog

wifi attack with kali linux

how to clone a simcard ???