Individualize your apps

By Allen Flick, Unix Insider |  Development Add a new comment

Are you ready for more pizzazz in your GUI applications? Most GUI toolkits provide several ways to configure such widget characteristics as color, font, and size. For the first installment of this three-column series, we look specifically at the Tk toolkit and its option database.

Tk is quite portable, so the examples here work under Mac OS, Unix, and Windows, among other operating systems. What's more, although these examples are coded in Tcl/Tk, each one can be adapted immediately for the related PerlTk, Tkinter (Python), TkLua, and other Tk-derived bindings.

Many successful Tk programmers are barely aware of the option database. Recent books by John Grayson, Nancy Walsh, and Chris Nelson have only a couple of pages each on this subject, although all three of these books capture the essentials accurately. This continues a tradition begun by Tk's author, John Ousterhout, who wrote in his 1994 book:

The option database shouldn't be needed very often in Tk applications because widgets have reasonable default values.... The option database exists primarily to provide cultural compatibility with other X toolkits; I suggest that you use it as little as possible.

Tk does indeed "have reasonable default values"; even beginners can build quite useful GUIs with Tk. After this column, though, you'll have a better grasp of how to advance beyond that level.

Not a database to fear

Don't be afraid of the option database. It's really just a small, flat configuration file. In other words, you can examine and update it as a simple text file, without the structural and transactional overhead of more formal databases. Here's a minimal example of an option database: a file in your Unix $HOME directory called .Xdefaults with contents:


     *background: blue

In English, this says, "Make the default background color for all my widgets in all my X applications, including Tk applications, blue." The format and interpretation of option databases are portable to Mac OS, OpenVMS, and Windows; the next installment will provide a few platform-specific tips to help start you off right if you're not using Unix.

More generally, an option database is a file that lists key-value pairs. With it, you can customize the appearance of an application without making any changes to the code for that application. A common example is a specification that cranks up the font size for widgets. Suppose you create a Tk-based application and deliver copies to hundreds of users. Everything's going great, until a couple of users complain that the text is too tiny. The option database answers their need with no requirement to alter your application, pass it through quality assurance again, redeploy it in separate versions, or any related complications. Instead, just instruct those users who want larger text to include the following line in their resource databases:


     *font: {Courier 17}

Syntax of the database

Refinements of the basic key-value syntax give more precise control of screen appearance. The format is exactly that of X's resource database, which is familiar to many Unix users. The key is a multipart string to name the application, a widget to receive the new value, and an attribute. A colon and whitespace separate the key and value. Thus, a single line that says, "Make the background color of the buttons of all Tk applications cyan" appears in the options database as:


     Tk.Button.background: cyan

Widget names can be wildcarded with *, so it's legal to write:


     Tk*background: cyan

It's also possible to name specific widgets, so the option database might include the lines:


     Tk.label1.background: white
     Tk.label5.background: blue

    Add a comment

    Post a comment using one of these accounts
    Or join now
    At least 6 characters

    Note: Comment will appear soon after you have activated your account.
    Obscene/spam comments will be removed and accounts suspended.
    The information you submit is subject to our Privacy Policy and Terms of Service.

    ITworld LIVE

    DevelopmentWhite Papers & Webcasts

    White Paper

    HP NonStop SQL Fundamentals whitepaper

    This whitepaper offers a detailed look into the fundamentals of HP NonStop SQL solutions. See how this system delivers unprecedented levels of application availability with fail-safe data integrity and meets the needs of enterprises with large-scale business critical applications.

    White Paper

    Nebraska Medical Center case study

    See how the Nebraska Medical Center implemented a SQL solution to make information more readily available to streamline operations, improve patient care and facilitate medical research with an enterprise solution running on HP NonStop servers.

    White Paper

    Concepts of NonStop SQL/MX

    For DBAs and developers who are familiar with Oracle solutions and want to learn about NonStop SQL/MX, this whitepaper provides an overview of the similarities and differences between the two products-with a specific focus on implementation.

    White Paper

    6 Things Your CIO Needs to Know About Requirements

    If your organization is not predictably successful on technology projects, there is likely an issue in requirements. CIOs must take action and own requirements maturity improvement. There are 6 main things a CIO must know about requirements.

    Webcast On Demand

    User Experience Monitoring

    In this webinar, you will learn hints & tips for improving end-user response times from Forrester Research analyst, Jean-Pierre Garbani.

    Sponsor: Nimsoft

    See more White Papers | Webcasts

    Ask a question

    Ask a Question