[EKB] I am creating this page as a place to hold links having to do with interface design in Tcl and Tk. There are a lot of pages on the Wiki that deal with this issue, as well as some external web sites, and for mysefl I wanted a single place to hold the links. I figured that if I wanted something like that, then others might, too, so I created this page. Most of the links are [GUI]-related. Wherever I found one, if there is already a page of links on some topic (e.g., [Alternative GUI toolkits]), I linked to the page of links, rather than to the individual pages. I'm sure I missed some, though... My reason for collecting these links is that while it is certainly possible to make a nice, easy-to-use interface in Tcl/Tk (and in particular, a nice-looking [GUI]), it's also easy to make one that is not so nice. (I have made many!) This seems to be a recurring theme in the Wiki, and many people have offered good suggestions for making nice interfaces. I wanted to have them easy to hand. An added challenge (at least for me) is that what the world in general thinks of as "nice-looking" is a moving target. Some of these have to do with real usability issues (e.g., the gripper, or [sizer control]) and some of them with changing styles for how things look (button-like buttons, flat buttons, blobby translucent buttons). For myself (and I suspect for many others), ignoring what the world in general expects in an interface isn't an option, so it's important to keep an eye on the moving target. I don't know what to do with this except add links to pages with information, widget sets, etc. for implementing the different styles. ---- '''User Interface Design Links''' These are links about user interface design in general. * I've found Joel Spolsky's User Interface Design for Programmers [http://joelonsoftware.com/navLinks/fog0000000247.html] to be very useful. The site includes text from his book of the same title. * The User Interface Hall of Shame [http://web.archive.org/web/20021017113918/www.iarchitect.com/shame.htm]. (The site itself is no longer active - this is an archived copy.) ---- '''Making Clean Code''' This isn't about interface design per se. It's about what's under the hood. But since what's under the hood supports what's on top, I think these links are appropriate. * [Tk coding styles and philosophies] * [writing readable, manageable, reusable Tk] * [Design patterns in Tcl] * [Actions] Also, [Which Widget] and [Widget Configure] are GUI debugging tools. There is also a Wiki page for [Android], "the only open source testing tool for GUI programs." ---- '''GUI and Tk General Information''' * [GUI] * [Geometry Managers] * [GUI Building Tools] * [How Tk compares to other GUI toolkits] * [Making Tk apps look native] * [Good Looking Tk] * [Creating Good GUIs] * [Data Driven Tk GUI Construction] * [Porting a Tk GUI to A Web Browser] ---- '''GUI Elements''' ''General collections'' * [Widgets in the initial Tk package] * [Alternative GUI toolkits] * [Alternate widget sets] * [Useful Tk Widgets] ''Specific widgets and other GUI elements'' * Balloon help: [balloon help], [tkballoon] * Dialogs: [dialog] * Buttons: [Fancy Tk Buttons], [ICON] * Floating palettes: [Floating Palette] (Using detachable [menu]s is another option -- similar functionality but less slick) * Grippers/Resizers: [Resize control], [widget:resizeHandle] * [custom cursors] * [megawidget]s * Making [Shape]d windows (that is, shapes other than rectangles); also see [Managed and shaped toplevel] * Fonts: [Introduction to Fonts] * Paned windows: [Paning widgets], [paned window] * Progress bars: [Progress Bar (Fellows)], [poor man's progressbar] * Working with the [system tray] * Tabbed notebooks: [tabnotebook] * Table widget: [Tktable] * [Wizard] ---- '''Making a Smoother User Experience''' * [Binding to a single mouse click] * [Changing all fonts in an application] * [AtExit handlers] * [Drag and Drop] * Detecting [Dual or Multiple Monitors] * Tips for the [text] widget: [Home, End and other formatting problems], [Move cursor by display line in a text widget] * Tips for the [canvas] widget: [Restricting the Movement of Canvas Items], [scanvas] * Inter-Process Communication: [Inventory of IPC methods] * [Keep a GUI alive during a long calculation] * [Scroll bars that appear only when needed] ---- '''Wrapping Tk Around an Existing GUI''' * For Unix/Linux: [How to embed a non-Tk GUI into a Tk frame] * For Windows: [Combining GUI applications developed with Tk and 'native' Windows toolkits] ---- '''Internationalization and Encoding''' * [i18n - Tcl for the world] * [source with encoding] * [Right-to-left entry widget] * [A little Unicode editor] ---- '''Options for Windows Applications''' * [Microsoft Windows and Tk] * [Combining GUI applications developed with Tk and 'native' Windows toolkits] * [Windows Application Framework] * [Using MFC Controls as Tk widgets] ---- '''Options for MacOS''' * [MacWindowStyle] for OS X ---- '''Options for *nix''' So far this is the only one I've spotted that's *nix-specific. I suspect two reasons for this: *nix separates the OS from the windowing environment, and Tcl/Tk started in a *nix environment. As a result, there are going to be few *nix-specific recommendations. * [Give Unix a Windows look and feel] ---- ''Footnote'' With the earlier version of this page, I'd bitten off more than I could chew. I had also duplicated a lot of existing work. I hope this version will be more useful. [http://www.jifamark.com/ 线号机]