Guide to Programming with Python Chapter Ten GUI Development: The Mad Lib Program.

Slides:



Advertisements
Similar presentations
Tk Widgets This material is best on several sources –Slides by Dr. Ernest J. Friedman-Hill –various Tcl/Tk books.
Advertisements

Chapter 8 Improving the User Interface
Noadswood Science,  To know how to use Python to produce windows and colours along with specified co-ordinates Sunday, April 12, 2015.
Guide to Oracle10G1 Introduction To Forms Builder Chapter 5.
Chapter 6 Graphical User Interface (GUI) and Object-Oriented Design (OOD)
Java Programming, 3e Concepts and Techniques Chapter 5 Arrays, Loops, and Layout Managers Using External Classes.
A Guide to Oracle9i1 Introduction To Forms Builder Chapter 5.
Fundamentals of Programming in Visual Basic 3.1 Visual basic Objects Visual Basic programs display a Windows style screen (called a form) with boxes into.
Chapter 9 Macros, Navigation Forms, PivotTables, and PivotCharts
I210 review (for final exam) Fall 2011, IUB. What’s in the Final Exam Multiple Choice (5) Short Answer (5) Program Completion (3) Note: A single-sided.
Microsoft Visual Basic 2005 CHAPTER 8 Using Procedures and Exception Handling.
Computer Science 111 Fundamentals of Programming I User Interfaces Introduction to GUI programming.
Visual Basic Chapter 1 Mr. Wangler.
Programming with Microsoft Visual Basic 2012 Chapter 13: Working with Access Databases and LINQ.
Microsoft Visual Basic 2012 Using Procedures and Exception Handling CHAPTER SEVEN.
XP New Perspectives on Microsoft Access 2002 Tutorial 51 Microsoft Access 2002 Tutorial 5 – Enhancing a Table’s Design, and Creating Advanced Queries and.
Microsoft Visual Basic 2005 CHAPTER 5 Mobile Applications Using Decision Structures.
The Bean Counter: A JavaScript Program
Chapter 8: Writing Graphical User Interfaces
Java Software Solutions Lewis and Loftus Chapter 10 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. Graphical User Interfaces --
Automating Database Processing Chapter 6. Chapter Introduction Design and implement user-friendly menu – Called navigation form Macros – Automate repetitive.
Chapter 8: Writing Graphical User Interfaces Visual Basic.NET Programming: From Problem Analysis to Program Design.
Computer Science 111 Fundamentals of Programming I Model/View/Controller and Data model design.
Key Applications Module Lesson 21 — Access Essentials
 Whether using paper forms or forms on the web, forms are used for gathering information. User enter information into designated areas, or fields. Forms.
PYTHON GUI PROGRAMMING
Computer Science 112 Fundamentals of Programming II Command Buttons and Responding to Events.
1 Computer Science of Graphics and Games MONT 105S, Spring 2009 Session 20 Graphical User Interface (GUI)
Python Programming Graphical User Interfaces Saad Bani Mohammad Department of Computer Science Al al-Bayt University 1 st 2011/2012.
Computing Science 1P Lecture 17: Friday 23 rd February Simon Gay Department of Computing Science University of Glasgow 2006/07.
1. Chapter 15 Creating Charts 3 Charting Data in Word A chart or graph presents data visually. A chart depicts numeric data in a graphical format. If.
How the Session Works Outline Practical on arrival Talk 1 Reflect on practical Clarify concepts Practical exercises at your own pace Talk 2: Further concepts.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Programming Logic & Design Second Edition by Tony Gaddis.
JavaScript, Fourth Edition
GUI development with Matlab: GUI Front Panel Components GUI development with Matlab: Other GUI Components 1 Other GUI components In this section, we will.
Chapter Fourteen Access Databases and SQL Programming with Microsoft Visual Basic th Edition.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 13 GUI Programming.
Creating visual interfaces in python
Guide to Programming with Python
T U T O R I A L  2009 Pearson Education, Inc. All rights reserved Student Grades Application Introducing Two-Dimensional Arrays and RadioButton.
Programming Logic and Design Fourth Edition, Comprehensive Chapter 14 Event-Driven Programming with Graphical User Interfaces.
Microsoft Visual Basic 2012 CHAPTER FIVE Decision Structures.
Microsoft Visual Basic 2012 CHAPTER FOUR Variables and Arithmetic Operations.
Chapter Fourteen Access Databases and SQL Programming with Microsoft Visual Basic th Edition.
COMPSA Exam Prep Session by Paul Allison On: April 8th from 1:30-3:00 Location TBA Winter 2016CISC101 - Prof. McLeod1.
See Winter 2016CISC101 - Prof. McLeod1.
Programming with Microsoft Visual Basic 2012 Chapter 14: Access Databases and SQL.
1 Chapter 6: Creating Oracle Data Block Forms. 2 Forms  Application with a graphical user interface that looks like a paper form  Used to insert, update,
CSC 108H: Introduction to Computer Programming Summer 2011 Marek Janicki.
Topics Graphical User Interfaces Using the tkinter Module
Graphical User Interfaces (GUIs)
“Form Ever Follows Function” Louis Henri Sullivan
Chapter Topics 15.1 Graphical User Interfaces
Chapter 8: Writing Graphical User Interfaces
Objectives Design a form Create a form Create text fields
CHAPTER FIVE Decision Structures.
CISC101 Reminders Grading of Quiz 4 underway.
GUI Using Python.
Fundamentals of Python: From First Programs Through Data Structures
CHAPTER FIVE Decision Structures.
This Week: Tkinter for GUI Interfaces Some examples
Tkinter GUIs Computer Science and Software Engineering
I210 review.
Fundamentals of Programming I Windows, Labels, and Command Buttons
Whatcha doin'? Aims: Begin to create GUI applications. Objectives:
Topics Graphical User Interfaces Using the tkinter Module
Chapter 15: GUI Applications & Event-Driven Programming
The University of Texas – Pan American
Tkinter User Input Form
Presentation transcript:

Guide to Programming with Python Chapter Ten GUI Development: The Mad Lib Program

Guide to Programming with Python2 Objectives Work with a GUI toolkit Create and fill frames Create and use buttons Create and use text entries and text boxes Create and use check buttons Create and use radio buttons

Guide to Programming with Python3 The Mad Lib Program Figure 10.1: Sample run of the Mad Lib program A nicely laid-out GUI awaits the user’s creativity.

Guide to Programming with Python4 The Mad Lib Program (continued) Figure 10.2: Sample run of the Mad Lib program The user has entered all of the necessary information.

Guide to Programming with Python5 The Mad Lib Program (continued) Figure 10.3: Sample run of the Mad Lib program After clicking Click for story button, text box displays masterpiece.

Guide to Programming with Python6 Examining A GUI Figure 10.4: Examining a GUI You’ll learn to create all of these GUI elements.

Guide to Programming with Python7 Examining A GUI (continued) Table 10.1: Selected GUI Elements

Guide to Programming with Python8 Understanding Event-Driven Programming Event-driven program: A program that responds to actions regardless of the order in which they occur Event: Something that happens involving a program's objects Event handler: Code that runs when a specific event occurs Bind: To associate an event with an event handler Event loop: A loop that checks for events and calls appropriate event handlers when they occur

Guide to Programming with Python9 Understanding Event-Driven Programming (continued) GUI programs traditionally event-driven Mad Lib without event-driven programming –Ask series of questions with raw_input () function –Ask for name of a person, plural noun... –User must provide each piece of information, in order Mad Lib with event-driven programming –Can use a GUI –User can enter the information in any order

Guide to Programming with Python10 Using A Root Window Root Window –Foundation of GUI program –Foundation upon which to add all other GUI elements –Like root of tree, anchors all other parts

Guide to Programming with Python11 The Simple GUI Program Figure 10.5: Sample run of the Simple GUI program The program creates only a lone window. simple_gui.py

Guide to Programming with Python12 The Simple GUI Program (continued) GUI programs can generate console window too Console window helpful to see error messages On Windows machine can suppress console window by changing program extension from py to pyw

Guide to Programming with Python13 Importing the Tkinter Module from Tkinter import * Tkinter is a GUI module Imports all Tkinter into global scope Normally, avoid this kind of import Some modules designed to be imported this way Saves typing and makes for cleaner code

Guide to Programming with Python14 Creating a Root Window root = Tk() To create a root window, instantiate object of the Tkinter class Tk Because of from Tkinter import *, no need to prefix the module name

Guide to Programming with Python15 Modifying a Root Window root.title("Simple GUI") root.geometry("200x100") title() –Sets title of root window –Takes string geometry() –Sets size of the root window –Takes string (not integers) for window’s width and height, separated by the "x" character

Guide to Programming with Python16 Entering a Root Window’s Event Loop root.mainloop() Root window's event loop entered Window stays open, waiting to handle events

Guide to Programming with Python17 Using Labels Widget: GUI elements (short for "window gadget") Label widget –Uneditable text or icons (or both) –Often used to label other widgets –Unlike most other widgets, labels aren’t interactive

Guide to Programming with Python18 The Labeler Program Figure 10.7: Sample run of the Labeler program A label can provide information about a GUI. labeler.py

Guide to Programming with Python19 Creating a Frame app = Frame(root) Master: A widget that contains other widgets Layout Manager: Controls arrangement of widgets Frame is widget that can hold other widgets When creating widget, must pass its master to constructor of new object Here, root is master that contains app

Guide to Programming with Python20 Creating a Frame (continued) app.grid() grid() –Method that all widgets have –Associated with grid layout manager –Can be used to create desired layout of widgets

Guide to Programming with Python21 Creating a Label lbl = Label(app, text = "I'm a label!") lbl.grid() Label Class –For a label widget –Master is first argument passed to constructor –text parameter for widget's text –grid() method invoked ensures widget visible (places widget at a default location in frame if called with no arguments)

Guide to Programming with Python22 Using Buttons Button widget –Is a button in GUI –Can be activated by user to perform some action

Guide to Programming with Python23 The Lazy Buttons Program Figure 10.8: Sample run of the Lazy Buttons program You can click these lazy buttons all you want; they won’t do a thing. lazy_buttons.py

Guide to Programming with Python24 Creating Buttons bttn1 = Button(app, text = "I do nothing!") bttn1.grid() Button Class –For a button widget –Master is first argument passed to constructor –text parameter for widget's text –grid() method invoked ensures widget visible

Guide to Programming with Python25 Creating Buttons (continued) bttn2 = Button(app) bttn2.grid() bttn2.configure(text = "Me too!") Can add blank button to the frame configure() method sets or changes widget options –Useful for changing widget after it has been instantiated

Guide to Programming with Python26 Creating Buttons (continued) bttn3 = Button(app) bttn3.grid() bttn3["text"] = "Same here!" Can access widget's options through dictionary-like interface Key for option is name of the option as a string Here, set third button's text option to "Same here!” Useful for changing widget after it has been instantiated (like.config() )

Guide to Programming with Python27 Creating a GUI Using a Class Organizing code into classes can make programming easier Often beneficial to write larger GUI programs in OOP style

Guide to Programming with Python28 The Lazy Buttons 2 Program Figure 10.9: Sample run of the Lazy Buttons 2 program Program appears the same but significant changes under the hood.

Guide to Programming with Python29 Defining the Application Class class Application(Frame): """ A GUI application with three buttons. """ def __init__(self, master): Instead of instantiating Frame object, will instantiate Application object Application object becomes just a specialized type of Frame object master will be the Tk window that the frame belongs to ( root in all our examples so far)

Guide to Programming with Python30 Defining a Constructor Method def __init__(self, master): Frame.__init__(self, master) self.grid() self.create_widgets() Frame constructor called first –This is what is used instead of super() for old object classes Pass Application object’s master, so it gets properly set as master Invoke Application object’s create_widgets() method

Guide to Programming with Python31 Defining a Method to Create the Widgets def create_widgets(self): self.bttn1 = Button(self, text = "I do nothing!") self.bttn1.grid() self.bttn2 = Button(self) self.bttn2.grid() self.bttn2.configure(text = "Me too!") self.bttn3 = Button(self) self.bttn3.grid() self.bttn3["text"] = "Same here!"

Guide to Programming with Python32 Creating the Application Object # main root = Tk() root.title("Lazy Buttons 2") root.geometry("200x85") app = Application(root) root.mainloop() Application object created here, not Frame object root is still master of object root.mainloop() still invoked lazy_buttons2.py

Guide to Programming with Python33 Binding Widgets and Event Handlers So far, GUI programs haven't had event handlers Widgets are like light fixtures without electrical wiring Write event handlers and bind them with events

Guide to Programming with Python34 The Click Counter Program Figure 10.10: Sample run of the Click Counter program Button’s event handler updates number of times button clicked.

Guide to Programming with Python35 Setting Up the Program from Tkinter import * class Application(Frame): def __init__(self, master): Frame.__init__(self, master) self.grid() self.bttn_clicks = 0 # number clicks self.create_widget()

Guide to Programming with Python36 Binding the Event Handler def create_widget(self): self.bttn = Button(self) self.bttn["text"]= "Total Clicks: 0" self.bttn["command"] = self.update_count self.bttn.grid() Set widget’s command option to bind activation of widget with event handler command option bound to update_count() method When button clicked, update_count() invoked

Guide to Programming with Python37 Creating the Event Handler def update_count(self): self.bttn_clicks += 1 self.bttn["text"] = "Total Clicks: " + str(self.bttn_clicks) update_count() increments total number of button clicks and changes text to reflect new total click_counter.py

Guide to Programming with Python38 Using Text and Entry Widgets and the Grid Layout Manager Entry widget is good for single line of text Text widget is great for multi-line blocks of text Can read contents of either Can insert text into either Grid layout manager lets you place widgets at specific locations by treating frame as a grid

Guide to Programming with Python39 The Longevity Program Figure 10.11: Sample run of the Longevity Program With incorrect password, program politely refuses to divulge its secret.

Guide to Programming with Python40 The Longevity Program (continued) Figure 10.12: Sample run of the Longevity Program With correct password, program shares its knowledge to long life.

Guide to Programming with Python41 Placing a Widget with the Grid Layout Manager Figure 10.13: Illustrates placement of button widgets Frame can be seen as a grid of cells at row and column numbers.

Guide to Programming with Python42 Placing a Widget with the Grid Layout Manager def create_widgets(self): self.inst_lbl = Label(self, text = "Enter password for the secret of longevity") self.inst_lbl.grid(row = 0, column = 0, columnspan = 2, sticky = W) grid() method –row takes integer; defines the row in which the object is placed (within the widget’s master) –column takes integer; defines the column in which the object is placed (within the widget’s master) –columnspan takes integer; defines width in columns –sticky takes constants ( N, S, E, W ); positions widget at specified edge of cell (centered by default)

Guide to Programming with Python43 Placing a Widget with the Grid Layout Manager # create label for password self.pw_lbl = Label(self, text = "Password: ") self.pw_lbl.grid(row = 1, column = 0, sticky = W) Creates a label that appears in row 1, left-justified

Guide to Programming with Python44 Creating an Entry Widget # create entry widget to accept password self.pw_ent = Entry(self) self.pw_ent.grid(row = 1, column = 1, sticky = W) Entry widget accepts and displays line of text

Guide to Programming with Python45 Creating a Button Widget # create submit button self.submit_bttn = Button(self, text = "Submit", command = self.reveal) self.submit_bttn.grid(row = 2, column = 0, sticky = W) Bind the activation of button with reveal() method Place button in next row, left-justified

Guide to Programming with Python46 Creating a Text Widget # create text widget to display message self.secret_txt = Text(self, width = 35, height = 5, wrap = WORD) self.secret_txt.grid(row = 3, column = 0, columnspan = 2, sticky = W) wrap parameter determines how text in the box is wrapped –WORD wraps entire words –CHAR wraps characters –NONE no wrapping (can only write text on the first line)

Guide to Programming with Python47 Getting and Inserting Text with Text- Based Widgets def reveal(self): """ Display message based on password. """ contents = self.pw_ent.get() if contents == "secret": message = "Here's the secret..." else: message = "That's not the correct..." self.secret_txt.delete(0.0, END) self.secret_txt.insert(0.0, message)

Guide to Programming with Python48 Getting and Inserting Text with Text- Based Widgets (continued) get() returns text from text-based widget delete() deletes text from text-based widget –Can take single index or beginning and ending point –Pass floating-point number for row and column –Tkinter provides constants, such as END insert() inserts a string into a text-based widget –Takes an insertion position and a string –Pass floating-point number for row and column longevity.py

Guide to Programming with Python49 Using Check Buttons Check buttons allow user to select any number of choices from a group Provides flexibility for user and control of limiting choices for programmer

Guide to Programming with Python50 The Movie Chooser Program Figure 10.14: Sample run of the Movie Chooser program The results of the user’s selections show up in the text box.

Guide to Programming with Python51 Allowing a Widget’s Master to Be Its Only Reference def create_widgets(self): Label(self, text = "Choose your favorite movie types" ).grid(row = 0, column = 0, sticky = W) Label object –Not assigned to variable –Can't be directly accessed –Connected to the program by its master

Guide to Programming with Python52 Creating Check Buttons # create Comedy check button self.likes_comedy = BooleanVar() BooleanVar –Special class from Tkinter module –Can reflect check button’s status –Required by Checkbutton object

Guide to Programming with Python53 Creating Check Buttons (continued) Checkbutton(self, text = "Comedy", variable = self.likes_comedy, command = self.update_text ).grid(row = 2, column = 0, sticky = W) variable takes BooleanVar for status of check button command takes function or method to call when check button is checked or unchecked

Guide to Programming with Python54 Getting the Status of a Check Button def update_text(self): likes = "" if self.likes_comedy.get(): likes += "You like comedic movies.\n" BooleanVar –Can’t access the value directly –Must invoke object’s get() method movie_chooser.py

Guide to Programming with Python55 Using Radio Buttons Radio buttons allow user to select one from a group of choices Provides programmer control by limiting range of choices and allowing only single choice

Guide to Programming with Python56 The Movie Chooser 2 Program Figure 10.15: Sample run of the Movie Chooser program The user can select only a single movie type.

Guide to Programming with Python57 Creating Radio Buttons # create variable for single, favorite type self.favorite = StringVar() StringVar –Special class from Tkinter module –Can reflect status of a group of radio buttons –Required by Radiobutton objects

Guide to Programming with Python58 Creating Radio Buttons (continued) Radiobutton(self, text = "Comedy", variable = self.favorite, value = "comedy.", command = self.update_text ).grid(row = 2, column = 0, sticky = W) variable parameter gets StringVar self.favorite When radio button is selected, StringVar assigned string referenced by object’s value option When Comedy radio button selected, StringVar self.favorite assigned "comedy."

Guide to Programming with Python59 Getting a Value from a Group of Radio Buttons message = "Your favorite type of movie is " message += self.favorite.get() get() method returns string referenced by the StringVar that all Radiobutton objects share When Comedy radio button selected, self.favorite.get() returns "comedy " movie_chooser2.py

Guide to Programming with Python60 The Mad Lib Program mad_lib.py

Guide to Programming with Python61 Summary A GUI is a graphical user interface A widget, short for window gadget, is a GUI element A master widget contains other widgets A layout manager controls the arrangement of widgets An event-driven program responds to actions regardless of the order in which they occur An event is something that happens involving a program’s objects

Guide to Programming with Python62 Summary (continued) An event handler is code that runs when a specific event occurs To bind is to associate an event with an event handler An event loop checks for events and, based on them, calls the appropriate event handlers Tkinter is a GUI module A Label object represents a label widget A Frame object represents a frame widget

Guide to Programming with Python63 Summary (continued) A Button object represents a button widget An Entry object represents a text entry widget A Text object represents a text box widget A Checkbutton object represents a check button widget A Radiobutton object represents a radio button widget