1 / 31

Computer Science 112

Computer Science 112. Fundamentals of Programming II User Interfaces Introduction to GUI programming. What Is a User Interface?. A set of hardware devices (touch screen, monitor, keyboard, mouse, microphone, speakers) Software (input/output functions)

verda
Download Presentation

Computer Science 112

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computer Science 112 Fundamentals of Programming II User Interfaces Introduction to GUI programming

  2. What Is a User Interface? • A set of hardware devices (touch screen, monitor, keyboard, mouse, microphone, speakers) • Software (input/output functions) • Allows human beings to use a computer effectively Inputs UI Computation Outputs

  3. Types of User Interfaces • ZUI (zoomable user interface) • GUI (graphical user interface) • TUI (terminal-based user interface) Inputs UI Computation Outputs

  4. Terminal-Based User Interface (TUI) Supports input via the keyboard and output via the monitor In Python, the I/O functions are input and print import math radius = float(input('Enter the radius: ')) area = math.pi * radius ** 2 print('The area is', area)

  5. Terminal-Based User Interface (TUI) Supports input via the keyboard and output via the monitor In Python, the I/O functions are input and print import math radius = float(input('Enter the radius: ')) area = math.pi * radius ** 2 print('The area is', area)

  6. Problems with a TUI • Must enter inputs in a certain order • Cannot back up to correct input mistakes or change one’s mind • Must re-enter all inputs to change just one • I/O restricted to text

  7. Graphical User Interface (GUI) • Supports input via the keyboard • Can output text and also graphical shapes representing desktop elements, such as windows, command buttons, data fields, and drop-down menus (also called “widgets”) • Supports direct manipulation of desktop elements via the mouse or touchscreen

  8. TUI vs GUI Non-programmers (the 99%) do not use a TUI, they use a GUI Only programmers (the 1%) use a TUI (and also a GUI) Most beginning programmers program to a TUI, not a GUI

  9. Programming a GUI • Most modern programming languages (like Python and Java) include packages or modules for programming a GUI • In Python, this module is called tkinter • The model of computation for a GUI program is more complex than that of a TUI program

  10. Models of Computation TUI GUI Layout and pop up the window Wait for user events Handle a user event Goto step 2 • Obtain user inputs • Perform computations • Print results

  11. GUI Resources in Python tkinter http://docs.python.org/py3k/library/tkinter.html#module-tkinter breezypythongui http://home.wlu.edu/~lambertk/breezypythongui/index.html

  12. What Is breezypythongui? • A module of classes and functions that makes GUI programming with tkinter easy for beginners • The module is free and open-source • A tutorial and sample programs are available at the breezypythongui Web site

  13. A First GUI Program: Hello World from breezypythonguiimportEasyFrame Import the abstract window class

  14. A First GUI Program: Hello World from breezypythonguiimportEasyFrame classHelloWorld(EasyFrame): """Displays a greeting in a window.""" Define a subclass to specialize it for this application

  15. A First GUI Program: Hello World from breezypythonguiimportEasyFrame classHelloWorld(EasyFrame): """Displays a greeting in a window.""" def__init__(self): """Sets up the window and the label.""" EasyFrame.__init__(self) self.addLabel(text = "Hello world!", row = 0, column = 0) Lay out the window and its widgets

  16. A First GUI Program: Hello World from breezypythonguiimportEasyFrame classHelloWorld(EasyFrame): """Displays a greeting in a window.""" def__init__(self): """Sets up the window and the label.""" EasyFrame.__init__(self) self.addLabel(text = "Hello world!", row = 0, column = 0) # Instantiates and pops up the window. if __name__ == "__main__": HelloWorld().mainloop() Create and launch the application window

  17. The Structure of Any GUI Program from breezypythonguiimportEasyFrame class<class name>(EasyFrame): def__init__(self): EasyFrame.__init__(self <optional args>) <code to set up widgets> <code to define event-handling methods> # Instantiates and pops up the window. if __name__ == "__main__": <class name>().mainloop()

  18. Laying Out Widgets class LayoutDemo(EasyFrame): """Displays labels in the quadrants.""" def__init__(self): """Sets up the window and the labels.""" EasyFrame.__init__(self) self.addLabel(text = "(0, 0)", row = 0, column = 0) self.addLabel(text = "(0, 1)", row = 0, column = 1) self.addLabel(text = "(1, 0)", row = 1, column = 0) self.addLabel(text = "(1, 1)", row = 1, column = 1)

  19. Alignment and Spanning def__init__(self): """Sets up the window and the labels.""" EasyFrame.__init__(self) self.addLabel(text = "(0, 0)", row = 0, column = 0, sticky = "NSEW") self.addLabel(text = "(0, 1)", row = 0, column = 1, sticky = "NSEW") self.addLabel(text = "(1, 0 and 1)", row = 1, column = 0, sticky = "NSEW", columnspan = 2)

  20. Window Attributes • width (window shrink-wraps around widgets by default) • height • title (empty string by default) • background (“white” by default) • resizable (True by default)

  21. Arguments to __init__ def__init__(self): """Sets up the window.""" EasyFrame.__init__(self, title = "Blue Window", width = 200, height = 100, background = "blue", resizable = False)

  22. Method Calls on self (the Window) def__init__(self): """Sets up the window.""" EasyFrame.__init__(self) self.setTitle("Blue Window") self.setSize(200, 100) self.setBackground("blue") self.setResizable(False)

  23. Set the Window’s Attribute Dictionary def__init__(self): """Sets up the window.""" EasyFrame.__init__(self) self["title"] = "Blue Window" self.setSize(200, 100) self["background"] = "blue" self.setResizable(False)

  24. The Label Widget and Its Attributes • The breezypythongui method addLabel • creates an object of type tkinter.Label with the given attributes (text and position are required) • places it in the window’s grid at the given position • returns the label object • The label’s attributes can then be accessed or modified by accessing its attribute dictionary

  25. The Label Widget and Its Attributes • font (a tkinter.font.Font object) • background (the color of the rectangular area surrounding the label) • foreground (the text color) • text (the label’s text) • image (a tkinter.PhotoImage object)

  26. A Captioned Image

  27. A Captioned Image from breezypythonguiimportEasyFrame fromtkinterimportPhotoImage fromtkinter.fontimport Font

  28. A Captioned Image from breezypythonguiimportEasyFrame fromtkinterimportPhotoImage fromtkinter.fontimport Font classImageDemo(EasyFrame): """Displays an image and a caption.""" def__init__(self): """Sets up the window and widgets.""" EasyFrame.__init__(self, title = "Image Demo", resizable = False) imageLabel = self.addLabel(text = "", row = 0, column = 0, sticky = "NSEW") textLabel = self.addLabel(text = "Smokey the cat", row = 1, column = 0, sticky = "NSEW")

  29. A Captioned Image from breezypythonguiimportEasyFrame fromtkinterimportPhotoImage fromtkinter.fontimport Font classImageDemo(EasyFrame): """Displays an image and a caption.""" def__init__(self): """Sets up the window and widgets.""" EasyFrame.__init__(self, title = "Image Demo", resizable = False) imageLabel = self.addLabel(text = "", row = 0, column = 0, sticky = "NSEW") textLabel = self.addLabel(text = "Smokey the cat", row = 1, column = 0, sticky = "NSEW") # Load the image and associate it with the image label. self.image = PhotoImage(file = "smokey.gif") imageLabel["image"] = self.image

  30. A Captioned Image from breezypythonguiimportEasyFrame fromtkinterimportPhotoImage fromtkinter.fontimport Font classImageDemo(EasyFrame): """Displays an image and a caption.""" def__init__(self): """Sets up the window and widgets.""" EasyFrame.__init__(self, title = "Image Demo", resizable = False) imageLabel = self.addLabel(text = "", row = 0, column = 0, sticky = "NSEW") textLabel = self.addLabel(text = "Smokey the cat", row = 1, column = 0, sticky = "NSEW") # Load the image and associate it with the image label. self.image = PhotoImage(file = "smokey.gif") imageLabel["image"] = self.image # Set the font and color of the caption. font = Font(family = "Verdana", size = 20, slant = "italic") textLabel["font"] = font textLabel["foreground"] = "blue"

  31. For Next Time • Command buttons • Responding to user events

More Related