<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <link rel="STYLESHEET" href="lib.css" type='text/css' /> <link rel="SHORTCUT ICON" href="../icons/pyfav.gif" /> <link rel='start' href='../index.html' title='Python Documentation Index' /> <link rel="first" href="lib.html" title='Python Library Reference' /> <link rel='contents' href='contents.html' title="Contents" /> <link rel='index' href='genindex.html' title='Index' /> <link rel='last' href='about.html' title='About this document...' /> <link rel='help' href='about.html' title='About this document...' /> <LINK rel="next" href="node642.html"> <LINK rel="prev" href="node640.html"> <LINK rel="parent" href="node637.html"> <LINK rel="next" href="node642.html"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name='aesop' content='information' /> <META name="description" content="Coupling Widget Variables"> <META name="keywords" content="lib"> <META name="resource-type" content="document"> <META name="distribution" content="global"> <title>16.1.6.4 Coupling Widget Variables</title> </head> <body> <DIV CLASS="navigation"> <div id='top-navigation-panel'> <table align="center" width="100%" cellpadding="0" cellspacing="2"> <tr> <td class='online-navigation'><a rel="prev" title="16.1.6.3 Packer Options" href="node640.html"><img src='../icons/previous.png' border='0' height='32' alt='Previous Page' width='32' /></A></td> <td class='online-navigation'><a rel="parent" title="16.1.6 Handy Reference" href="node637.html"><img src='../icons/up.png' border='0' height='32' alt='Up One Level' width='32' /></A></td> <td class='online-navigation'><a rel="next" title="16.1.6.5 The Window Manager" href="node642.html"><img src='../icons/next.png' border='0' height='32' alt='Next Page' width='32' /></A></td> <td align="center" width="100%">Python Library Reference</td> <td class='online-navigation'><a rel="contents" title="Table of Contents" href="contents.html"><img src='../icons/contents.png' border='0' height='32' alt='Contents' width='32' /></A></td> <td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png' border='0' height='32' alt='Module Index' width='32' /></a></td> <td class='online-navigation'><a rel="index" title="Index" href="genindex.html"><img src='../icons/index.png' border='0' height='32' alt='Index' width='32' /></A></td> </tr></table> <div class='online-navigation'> <b class="navlabel">Previous:</b> <a class="sectref" rel="prev" href="node640.html">16.1.6.3 Packer Options</A> <b class="navlabel">Up:</b> <a class="sectref" rel="parent" href="node637.html">16.1.6 Handy Reference</A> <b class="navlabel">Next:</b> <a class="sectref" rel="next" href="node642.html">16.1.6.5 The Window Manager</A> </div> <hr /></div> </DIV> <!--End of Navigation Panel--> <H3><A NAME="SECTION0018164000000000000000"> 16.1.6.4 Coupling Widget Variables</A> </H3> <P> The current-value setting of some widgets (like text entry widgets) can be connected directly to application variables by using special options. These options are <code>variable</code>, <code>textvariable</code>, <code>onvalue</code>, <code>offvalue</code>, and <code>value</code>. This connection works both ways: if the variable changes for any reason, the widget it's connected to will be updated to reflect the new value. <P> Unfortunately, in the current implementation of <tt class="module"><a href="module-Tkinter.html">Tkinter</a></tt> it is not possible to hand over an arbitrary Python variable to a widget through a <code>variable</code> or <code>textvariable</code> option. The only kinds of variables for which this works are variables that are subclassed from a class called Variable, defined in the <tt class="module"><a href="module-Tkinter.html">Tkinter</a></tt> module. <P> There are many useful subclasses of Variable already defined: <tt class="class">StringVar</tt>, <tt class="class">IntVar</tt>, <tt class="class">DoubleVar</tt>, and <tt class="class">BooleanVar</tt>. To read the current value of such a variable, call the <tt class="method">get()</tt> method on it, and to change its value you call the <tt class="method">set()</tt> method. If you follow this protocol, the widget will always track the value of the variable, with no further intervention on your part. <P> For example: <div class="verbatim"><pre> class App(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.pack() self.entrythingy = Entry() self.entrythingy.pack() self.button.pack() # here is the application variable self.contents = StringVar() # set it to some value self.contents.set("this is a variable") # tell the entry widget to watch this variable self.entrythingy["textvariable"] = self.contents # and here we get a callback when the user hits return. # we will have the program print out the value of the # application variable when the user hits return self.entrythingy.bind('<Key-Return>', self.print_contents) def print_contents(self, event): print "hi. contents of entry is now ---->", \ self.contents.get() </pre></div> <P> <DIV CLASS="navigation"> <div class='online-navigation'><hr /> <table align="center" width="100%" cellpadding="0" cellspacing="2"> <tr> <td class='online-navigation'><a rel="prev" title="16.1.6.3 Packer Options" rel="prev" title="16.1.6.3 Packer Options" href="node640.html"><img src='../icons/previous.png' border='0' height='32' alt='Previous Page' width='32' /></A></td> <td class='online-navigation'><a rel="parent" title="16.1.6 Handy Reference" rel="parent" title="16.1.6 Handy Reference" href="node637.html"><img src='../icons/up.png' border='0' height='32' alt='Up One Level' width='32' /></A></td> <td class='online-navigation'><a rel="next" title="16.1.6.5 The Window Manager" rel="next" title="16.1.6.5 The Window Manager" href="node642.html"><img src='../icons/next.png' border='0' height='32' alt='Next Page' width='32' /></A></td> <td align="center" width="100%">Python Library Reference</td> <td class='online-navigation'><a rel="contents" title="Table of Contents" rel="contents" title="Table of Contents" href="contents.html"><img src='../icons/contents.png' border='0' height='32' alt='Contents' width='32' /></A></td> <td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png' border='0' height='32' alt='Module Index' width='32' /></a></td> <td class='online-navigation'><a rel="index" title="Index" rel="index" title="Index" href="genindex.html"><img src='../icons/index.png' border='0' height='32' alt='Index' width='32' /></A></td> </tr></table> <div class='online-navigation'> <b class="navlabel">Previous:</b> <a class="sectref" rel="prev" href="node640.html">16.1.6.3 Packer Options</A> <b class="navlabel">Up:</b> <a class="sectref" rel="parent" href="node637.html">16.1.6 Handy Reference</A> <b class="navlabel">Next:</b> <a class="sectref" rel="next" href="node642.html">16.1.6.5 The Window Manager</A> </div> </div> <hr /> <span class="release-info">Release 2.3.4, documentation updated on May 20, 2004.</span> </DIV> <!--End of Navigation Panel--> <ADDRESS> See <i><a href="about.html">About this document...</a></i> for information on suggesting changes. </ADDRESS> </BODY> </HTML>