404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@3.16.212.0: ~ $
# Tkinter font wrapper
#
# written by Fredrik Lundh, February 1998
#
# FIXME: should add 'displayof' option where relevant (actual, families,
#        measure, and metrics)
#

__version__ = "0.9"

import Tkinter

# weight/slant
NORMAL = "normal"
ROMAN = "roman"
BOLD   = "bold"
ITALIC = "italic"

def nametofont(name):
    """Given the name of a tk named font, returns a Font representation.
    """
    return Font(name=name, exists=True)

class Font:

    """Represents a named font.

    Constructor options are:

    font -- font specifier (name, system font, or (family, size, style)-tuple)
    name -- name to use for this font configuration (defaults to a unique name)
    exists -- does a named font by this name already exist?
       Creates a new named font if False, points to the existing font if True.
       Raises _Tkinter.TclError if the assertion is false.

       the following are ignored if font is specified:

    family -- font 'family', e.g. Courier, Times, Helvetica
    size -- font size in points
    weight -- font thickness: NORMAL, BOLD
    slant -- font slant: ROMAN, ITALIC
    underline -- font underlining: false (0), true (1)
    overstrike -- font strikeout: false (0), true (1)

    """

    def _set(self, kw):
        options = []
        for k, v in kw.items():
            if not isinstance(v, basestring):
                v = str(v)
            options.append("-"+k)
            options.append(v)
        return tuple(options)

    def _get(self, args):
        options = []
        for k in args:
            options.append("-"+k)
        return tuple(options)

    def _mkdict(self, args):
        options = {}
        for i in range(0, len(args), 2):
            options[args[i][1:]] = args[i+1]
        return options

    def __init__(self, root=None, font=None, name=None, exists=False, **options):
        if not root:
            root = Tkinter._default_root
        tk = getattr(root, 'tk', root)
        if font:
            # get actual settings corresponding to the given font
            font = tk.splitlist(tk.call("font", "actual", font))
        else:
            font = self._set(options)
        if not name:
            name = "font" + str(id(self))
        self.name = name

        if exists:
            self.delete_font = False
            # confirm font exists
            if self.name not in tk.splitlist(tk.call("font", "names")):
                raise Tkinter._tkinter.TclError, "named font %s does not already exist" % (self.name,)
            # if font config info supplied, apply it
            if font:
                tk.call("font", "configure", self.name, *font)
        else:
            # create new font (raises TclError if the font exists)
            tk.call("font", "create", self.name, *font)
            self.delete_font = True
        self._tk = tk
        self._split = tk.splitlist
        self._call  = tk.call

    def __str__(self):
        return self.name

    def __eq__(self, other):
        return isinstance(other, Font) and self.name == other.name

    def __getitem__(self, key):
        return self.cget(key)

    def __setitem__(self, key, value):
        self.configure(**{key: value})

    def __del__(self):
        try:
            if self.delete_font:
                self._call("font", "delete", self.name)
        except (KeyboardInterrupt, SystemExit):
            raise
        except Exception:
            pass

    def copy(self):
        "Return a distinct copy of the current font"
        return Font(self._tk, **self.actual())

    def actual(self, option=None):
        "Return actual font attributes"
        if option:
            return self._call("font", "actual", self.name, "-"+option)
        else:
            return self._mkdict(
                self._split(self._call("font", "actual", self.name))
                )

    def cget(self, option):
        "Get font attribute"
        return self._call("font", "config", self.name, "-"+option)

    def config(self, **options):
        "Modify font attributes"
        if options:
            self._call("font", "config", self.name,
                  *self._set(options))
        else:
            return self._mkdict(
                self._split(self._call("font", "config", self.name))
                )

    configure = config

    def measure(self, text):
        "Return text width"
        return int(self._call("font", "measure", self.name, text))

    def metrics(self, *options):
        """Return font metrics.

        For best performance, create a dummy widget
        using this font before calling this method."""

        if options:
            return int(
                self._call("font", "metrics", self.name, self._get(options))
                )
        else:
            res = self._split(self._call("font", "metrics", self.name))
            options = {}
            for i in range(0, len(res), 2):
                options[res[i][1:]] = int(res[i+1])
            return options

def families(root=None):
    "Get font families (as a tuple)"
    if not root:
        root = Tkinter._default_root
    return root.tk.splitlist(root.tk.call("font", "families"))

def names(root=None):
    "Get names of defined fonts (as a tuple)"
    if not root:
        root = Tkinter._default_root
    return root.tk.splitlist(root.tk.call("font", "names"))

# --------------------------------------------------------------------
# test stuff

if __name__ == "__main__":

    root = Tkinter.Tk()

    # create a font
    f = Font(family="times", size=30, weight=NORMAL)

    print f.actual()
    print f.actual("family")
    print f.actual("weight")

    print f.config()
    print f.cget("family")
    print f.cget("weight")

    print names()

    print f.measure("hello"), f.metrics("linespace")

    print f.metrics()

    f = Font(font=("Courier", 20, "bold"))
    print f.measure("hello"), f.metrics("linespace")

    w = Tkinter.Label(root, text="Hello, world", font=f)
    w.pack()

    w = Tkinter.Button(root, text="Quit!", command=root.destroy)
    w.pack()

    fb = Font(font=w["font"]).copy()
    fb.config(weight=BOLD)

    w.config(font=fb)

    Tkinter.mainloop()

Filemanager

Name Type Size Permission Actions
test Folder 0755
Canvas.py File 7.29 KB 0644
Canvas.pyc File 15.2 KB 0644
Canvas.pyo File 15.2 KB 0644
Dialog.py File 1.53 KB 0644
Dialog.pyc File 1.88 KB 0644
Dialog.pyo File 1.88 KB 0644
FileDialog.py File 8.62 KB 0644
FileDialog.pyc File 9.49 KB 0644
FileDialog.pyo File 9.49 KB 0644
FixTk.py File 2.95 KB 0644
FixTk.pyc File 2.04 KB 0644
FixTk.pyo File 1.98 KB 0644
ScrolledText.py File 1.79 KB 0644
ScrolledText.pyc File 2.6 KB 0644
ScrolledText.pyo File 2.6 KB 0644
SimpleDialog.py File 3.64 KB 0644
SimpleDialog.pyc File 4.24 KB 0644
SimpleDialog.pyo File 4.24 KB 0644
Tix.py File 75.41 KB 0644
Tix.pyc File 93.84 KB 0644
Tix.pyo File 93.84 KB 0644
Tkconstants.py File 1.46 KB 0644
Tkconstants.pyc File 2.19 KB 0644
Tkconstants.pyo File 2.19 KB 0644
Tkdnd.py File 11.22 KB 0644
Tkdnd.pyc File 12.52 KB 0644
Tkdnd.pyo File 12.52 KB 0644
Tkinter.py File 156.85 KB 0644
Tkinter.pyc File 195.5 KB 0644
Tkinter.pyo File 195.5 KB 0644
tkColorChooser.py File 1.74 KB 0644
tkColorChooser.pyc File 1.39 KB 0644
tkColorChooser.pyo File 1.39 KB 0644
tkCommonDialog.py File 1.38 KB 0644
tkCommonDialog.pyc File 1.48 KB 0644
tkCommonDialog.pyo File 1.48 KB 0644
tkFileDialog.py File 5.59 KB 0644
tkFileDialog.pyc File 5.04 KB 0644
tkFileDialog.pyo File 5.04 KB 0644
tkFont.py File 6.02 KB 0644
tkFont.pyc File 7 KB 0644
tkFont.pyo File 7 KB 0644
tkMessageBox.py File 3.6 KB 0644
tkMessageBox.pyc File 3.8 KB 0644
tkMessageBox.pyo File 3.8 KB 0644
tkSimpleDialog.py File 7.54 KB 0644
tkSimpleDialog.pyc File 8.9 KB 0644
tkSimpleDialog.pyo File 8.9 KB 0644
ttk.py File 54.86 KB 0644
ttk.pyc File 61.16 KB 0644
ttk.pyo File 61.16 KB 0644
turtle.py File 135.78 KB 0644
turtle.pyc File 136.31 KB 0644
turtle.pyo File 136.31 KB 0644