Introduction to Tkinter
In this part of the Tkinter tutorial, we will introduce the Tkinter toolkit and create our first programs.The purpose of this tutorial is to get you started with the Tkinter toolkit. Images used in this tutorial can be downloaded here. I used some icons from the Tango icons pack of the Gnome project.
Tkinter
Tkinter is a Python binding to the Tk GUI toolkit. Tk is the original GUI library for the Tcl language. Tkinter is implemented as a Python wrapper around a complete Tcl interpreter embedded in the Python interpreter. There are several other popular Python GUI toolkits. Most popular are wxPython, PyQt and PyGTK.Python
Python is a general-purpose, dynamic, object-oriented programming language. The design purpose of the Python language emphasizes programmer productivity and code readability. Python was initially developed by Guido van Rossum. It was first released in 1991. Python was inspired by ABC, Haskell, Java, Lisp, Icon and Perl programming languages. Python is a high level, general purpose, multiplatform, interpreted language. Python is a minimalistic language. One of its most visible features is that it does not use semicolons nor brackets. Python uses indentation instead. There are two main branches of Python currently. Python 2.x and Python 3.x. Python 3.x breaks backward compatibility with previous releases of Python. It was created to correct some design flaws of the language and make the language more clean. The most recent version of Python 2.x is 2.7.1, and of Python 3.x 3.1.3. This tutorial is written in Python 2.x. Most of the code is written in Python 2.x versions. It will take some time till the software base and programmers will migrate to Python 3.x. Today, Python is maintained by a large group of volunteers worldwide. Python is open source software.Python is an ideal start for those, who want to learn programming.
Python programming language supports several programming styles. It does not force a programmer to a specific paradigm. Python supports object oriented and procedural programming. There is also a limited support for functional programming.
The official web site for the Python programming language is python.org
Simple example
In our first example, we will show a basic window on the screen.#!/usr/bin/pythonWhile this code is very small, the application window can do quite a lot. It can be resized, maximized, minimized. All the complexity that comes with it has been hidden from the application programmer.
# -*- coding: utf-8 -*-
"""
ZetCode Tkinter tutorial
This script shows a simple window
on the screen.
author: Jan Bodnar
last modified: January 2011
website: www.zetcode.com
"""
from Tkinter import Tk, Frame, BOTH
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, background="white")
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Simple")
self.pack(fill=BOTH, expand=1)
def main():
root = Tk()
root.geometry("250x150+300+300")
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
from Tkinter import Tk, FrameHere we import
Tk
and Frame
classes. The first class is used to create a root window. The latter is a container for other widgets. class Example(Frame):Our example class inherits from the
def __init__(self, parent):
Frame.__init__(self, parent, background="white")
Frame
container widget. In the __init__()
constructor method we call the constructor of our inherited class. The background
parameter specifies the background color of the Frame
widget. self.parent = parentWe save a reference to the parent widget. The parent widget is the Tk root window in our case.
self.initUI()We delegate the creation of the user interface to the
initUI()
method. self.parent.title("Simple")We set the title of the window using the
title()
method. self.pack(fill=BOTH, expand=1)The
pack()
method is one of the three geometry managers in Tkinter. It organizes widgets into horizontal and vertical boxes. Here we put the Frame
widget, accessed via the self attribute to the Tk root window. It is expanded in both directions. In other words, it takes the whole client space of the root window. root = Tk()The root window is created. The root window is a main application window in our programs. It has a title bar and borders. These are provided by the window manager. It must be created before any other widgets.
root.geometry("250x150+300+300")The
geometry()
method sets a size for the window and positions it on the screen. The first two parameters are width and height of the window. The last two parameters are x, y screen coordinates. app = Example(root)Here we create the instance of the application class.
root.mainloop()Finally, we enter the mainloop. The event handling starts from this point. The mainloop receives events from the window system and dispatches them to the application widgets. It is terminated when we click on the close button of the titlebar or call the
quit()
method. Figure: Simple window
Centering window
This script centers a window on the screen.#!/usr/bin/pythonWe need to have the size of the window and the size of the screen to position the window in the center of the monitor screen.
# -*- coding: utf-8 -*-
"""
ZetCode Tkinter tutorial
This script centers a small
window on the screen.
author: Jan Bodnar
last modified: January 2011
website: www.zetcode.com
"""
from Tkinter import Tk, Frame, BOTH
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, background="white")
self.parent = parent
self.parent.title("Centered window")
self.pack(fill=BOTH, expand=1)
self.centerWindow()
def centerWindow(self):
w = 290
h = 150
sw = self.parent.winfo_screenwidth()
sh = self.parent.winfo_screenheight()
x = (sw - w)/2
y = (sh - h)/2
self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y))
def main():
root = Tk()
ex = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
w = 290These are the width and height values of the application window.
h = 150
sw = self.parent.winfo_screenwidth()We determine the width and height of the screen.
sh = self.parent.winfo_screenheight()
x = (sw - w)/2We calculate the required x, y coordinates.
y = (sh - h)/2
self.parent.geometry('%dx%d+%d+%d' % (w, h, x, y))Finally, the
geometry()
method is used to place the window in the center of the screen. Quit button
In the last example of this section, we will create a quit button. When we press this button, the application terminates.#!/usr/bin/pythonWe position a
# -*- coding: utf-8 -*-
"""
ZetCode Tkinter tutorial
This program creates a quit
button. When we press the button,
the application terminates.
author: Jan Bodnar
last modified: December 2010
website: www.zetcode.com
"""
from Tkinter import Tk, BOTH
from ttk import Frame, Button, Style
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Quit button")
self.style = Style()
self.style.theme_use("default")
self.pack(fill=BOTH, expand=1)
quitButton = Button(self, text="Quit",
command=self.quit)
quitButton.place(x=50, y=50)
def main():
root = Tk()
root.geometry("250x150+300+300")
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
Button
on the window. Clicking on the button will terminate the application. from ttk import Frame, Button, StyleTkinter supports theming of widgets. Widgets that are themed can be imported from the ttk module. At the time of this writing, not all widgets are themable. For instance, menus or listboxes are not supported so far.
self.style = Style()We apply a theme for our widgets. Some of the supported themes are clam, default, alt or classic.
self.style.theme_use("default")
quitButton = Button(self, text="Quit",We create an instance of the
command=self.quit)
Button
widget. The parent of this button is the Frame
container. We provide a label for the button and a command. The command specifies a method that is called when we press the button. In our case the quit()
method is called, which terminates the application. quitButton.place(x=50, y=50)We use the
place
geometry manager to position the button in absolute coordinates. 50x50px from the top-left corner of the window. Figure: Quit button
This section was an introduction to the Tkinter toolkit.
No comments:
Post a Comment