Subpixel positioning on Tk canvas
Terry Reedy
tjreedy at udel.edu
Sat Jun 19 19:49:47 EDT 2021
On 6/19/2021 12:42 AM, Christian Gollwitzer wrote:
> Am 19.06.21 um 06:26 schrieb George Furbish:
>> On Saturday, June 19, 2021 at 12:22:31 AM UTC-4, Christian Gollwitzer
>> wrote:
>>> Am 19.06.21 um 02:03 schrieb George Furbish:
>>>> Does Tk support interpolation/subpixel positioning of canvas
>>>> elements? (e.g. images, text.) I have moving elements on my canvas,
>>>> but the movement isn't very smooth and it's especially obvious when
>>>> I have text moving alongside an image, since the two elements tend
>>>> to jump to the next pixel at different times, creating a little
>>>> judder between the two.
>>> There is an "improved canvas" available, tkpath, which supports
>>> antialiasing on all platforms. It is part of, e.g. undroidwish, if you
>>> want to experiment with it. Last time I tested it had problems on macOS
>>> though.
>>
>> How can I enable or access the improved canvas via Tkinter?
>>
>
> Probably by writing the wrapper for it ;)
>
> Sorry for that answer, but Tkinter does not support many of the most
> useful extensions for Tcl/Tk, because someone has to write the wrappers.
> It only supports what is provided by base Tk. Among those I consider
> useful and use in almost any application are:
Are these extensions included with the tcl/tk distribution, or otherwise
available from active state? Are this extensions included with Linux
installations of tcl/tk? Or easily installed?
> * TkDnD for native drag'n'drop support (there is an inferior python
> package of the same name which implements local DnD only)
>
> * tablelist - complete widget for displaying trees and tables like
> ttk::treeview, but with almost every feature one could imagine
>
> * pdf4tcl - create a PDF from a canvas content, e.g. for printing
> ....
>
> Basically you call Tcl via the eval() method of tkinter; in principle
> you could do
>
> ========================
> import tkinter as tk
> root=tk()
>
> root.eval('package require tkpath')
> root.eval('...here comes your tkpath code...')
> root.call('.tkp', 'create', 'oval', ....)
> ============================
>
> tkpath is described here: https://wiki.tcl-lang.org/page/tkpath
>
> For the wrapping, look at the implementation files of Tkinter, for say,
> the original canvas, and modify accordingly.
>
> Christian
>
--
Terry Jan Reedy
More information about the Python-list
mailing list