<!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN">
<link rel=
"STYLESHEET" href=
"lib.css" type='text/css'
/>
<link rel=
"SHORTCUT ICON" href=
"../icons/pyfav.png" type=
"image/png" />
<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=
"node727.html" />
<link rel=
"prev" href=
"node725.html" />
<link rel=
"parent" href=
"node722.html" />
<link rel=
"next" href=
"node727.html" />
<meta name='aesop' content='information'
/>
<title>16.1.6.4 Coupling Widget Variables
</title>
<div id='top-navigation-panel' xml:id='top-navigation-panel'
>
<table align=
"center" width=
"100%" cellpadding=
"0" cellspacing=
"2">
<td class='online-navigation'
><a rel=
"prev" title=
"16.1.6.3 Packer Options"
href=
"node725.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=
"node722.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=
"node727.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>
<div class='online-navigation'
>
<b class=
"navlabel">Previous:
</b>
<a class=
"sectref" rel=
"prev" href=
"node725.html">16.1.6.3 Packer Options
</A>
<b class=
"navlabel">Up:
</b>
<a class=
"sectref" rel=
"parent" href=
"node722.html">16.1.6 Handy Reference
</A>
<b class=
"navlabel">Next:
</b>
<a class=
"sectref" rel=
"next" href=
"node727.html">16.1.6.5 The Window Manager
</A>
<!--End of Navigation Panel-->
<H3><A NAME=
"SECTION0018164000000000000000">
16.1.6.4 Coupling Widget Variables
</A>
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.
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.
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.
<div class=
"verbatim"><pre>
def __init__(self, master=None):
Frame.__init__(self, master)
self.entrythingy = Entry()
# here is the application variable
self.contents = StringVar()
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
>',
def print_contents(self, event):
print
"hi. contents of entry is now ---->", \
<div class='online-navigation'
>
<table align=
"center" width=
"100%" cellpadding=
"0" cellspacing=
"2">
<td class='online-navigation'
><a rel=
"prev" title=
"16.1.6.3 Packer Options"
href=
"node725.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=
"node722.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=
"node727.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>
<div class='online-navigation'
>
<b class=
"navlabel">Previous:
</b>
<a class=
"sectref" rel=
"prev" href=
"node725.html">16.1.6.3 Packer Options
</A>
<b class=
"navlabel">Up:
</b>
<a class=
"sectref" rel=
"parent" href=
"node722.html">16.1.6 Handy Reference
</A>
<b class=
"navlabel">Next:
</b>
<a class=
"sectref" rel=
"next" href=
"node727.html">16.1.6.5 The Window Manager
</A>
<span class=
"release-info">Release
2.4.2, documentation updated on
28 September
2005.
</span>
<!--End of Navigation Panel-->
See
<i><a href=
"about.html">About this document...
</a></i> for information on suggesting changes.