관리-도구
편집 파일: WmDefault.txt
One of the bad things about Tk/Tkinter is that it does not pick up the current color and font scheme from the prevailing CDE/KDE/GNOME/Windows window manager scheme. One of the good things about Tk/Tkinter is that it is not tied to one particular widget set so it could pick up the current color and font scheme from the prevailing CDE/KDE/GNOME/Windows window manager scheme. The WmDefault package is for making Tk/Tkinter applications use the prevailing CDE/KDE/GNOME/Windows scheme. It tries to find the files and/or settings that the current window manager is using, and then sets the Tk options database accordingly (plus a few other things as well). DOWNLOAD -------- Download the latest version of wm_default from http://tix.sourceforge.net either as a part of the standard Tix distribution, or as a part of the Tix Applications: http://tix.sourceforge.net/Tide. wm_default does not require Tix, but is Tix enabled. USAGE: ------ For Tix versions 8.1.2 and above from http://tix.sourceforge.net, WmDefault is the default Tix scheme, so there is nothing else to do. For Tk applications, it should be sufficent at the beginning of a wish app to simply: package require wm_default wm_default::setup wm_default::addoptions The process is divided into 2 steps: 1) find the files and/or settings (::wm_default::setup). This is complete for Windows, pretty good for KDE and CDE, and still barely supported for GNOME because of the difficulty of finding and parsing sawfish definition files. setup takes one optional argument: wm, the name of the window manager as a string, if known. One of: windows gnome kde1 kde2 cde. 2) Setting the Tk options database (::wm_default::addoptions). You can override the settings in 1) by adding your values to the call to addoptions: ::wm_default::addoptions -foreground red -background blue You can examine the settings with ::wm_default::getoptions which returns a Tcl array of the current settings, and ::wm_default::parray which returns a string of the current settings, one value-pair per line. There are a number of assumptions built into the heuristics of addoptions, that may need fine tuning. Post patches to http://tix.sourceforge.net. PYTHON ______ If you are using Tix versions 8.1.2 and above from http://tix.sourceforge.net with Python 2.1 and above, WmDefault is the default Tix scheme, so there is nothing else you need to do. The easiest way to install WmDefault for Tkinter is to copy the WmDefault.* AND THE FILE pkgIndex.tcl from lib/tix8.1/pref to a directory on your PYTHONPATH. Then the following should work: import Tkinter root = Tkinter.Tk() import WmDefault WmDefault.setup(root) WmDefault.addoptions(root, {'foreground': 'red'}) print WmDefault.getoptions(root) SETTINGS -------- Here is a list of all the settings controlled by WmDefault: wm - one of windows gnome kde1 kde2 cde kde background foreground disabledforeground disabledbackground textfamily systemfamily menufamily fixedfamily fontsize - in pixels under Unix, in points under Windows textbackground textforeground disabledtextbackground selectbackground selectforeground selectcolor highlightcolor highlightbackground scrollbars - scrollbar trough color borderwidth priority menubackground menuforeground activebackground activeforeground system_font - a Tcl font spec, a list of family size weight menu_font fixed_font text_font linkcolor - not working completely yet vlinkcolor alinkcolor TO MAKE A PREVIOUS TIX USE THIS AS THE DEFAULT SCHEME: ------------------------------------------------------ 1) Compile Tix with -DTIX_DEF_SCHEME "WmDefault" -DTIX_DEF_FONTSET "WmDefault" or change the defines in generic/tixInit.c #define TIX_DEF_SCHEME "WmDefault" #define TIX_DEF_FONTSET "WmDefault" 2) Edit the installed lib/8.1/Tix.tcl and change the -configspec in tixClass tixAppContext with the following {-fontset WmDefault} {-scheme WmDefault} 3) Copy the files WmDefault.* AND pkgIndex.tcl to the installed lib/tix8.1/pref 4) Make or edit the file lib/tix8.1/pkgIndex.tcl and add the lines package ifneeded wm_default 1.0 \ [list source [file join $dir pref WmDefault.tcl]]