How to use Tkinter in PyPy on Windows 7 64bit How to use Tkinter in PyPy on Windows 7 64bit tkinter tkinter

How to use Tkinter in PyPy on Windows 7 64bit


I've gotten tkinter to compile on Windows (tested on Windows 8 64-bit, but I believe it will work on Windows 7 as well).

Here are the steps that I took:

Install Microsoft Visual Studio C++ 2008 SP1 Express Edition

**KS: Available here: http://go.microsoft.com/?linkid=7729279

Install TclTk 8.5 (ActiveTcl Community Edition 8.5.13)

**KS: Make sure to install the 32-bit version if you've installed pypy 32-bit.

Unpack pypy-c-jit-latest-win32 (or one of the 2.0 betas)

Download http://python-distribute.org/distribute_setup.py

Run pypy.exe distribute_setup.py

Download and unpack https://bitbucket.org/pypy/tkinter/get/default.zip

Modify pypy-tkinter/setup.py as follows:

Replace "c:/tcl" with the install location used for ActiveTcl and "c:/pypy-c-jit-latest-win32" with the install location for pypy

Change libraries to use their Windows file names and also reference the "python27" library included with pypy:(my entries are shown below)

library_dirs=["c:/tcl/lib", "c:/pypy-c-jit-latest-win32/include"]include_dirs=["c:/tcl/include", "c:/pypy-c-jit-latest-win32/include"]libraries=["tk85", "tcl85", "python27"]

Run pypy.exe setup.py install from the pypy-tkinter directory. It should compile and install site-packages\tkinter_pypy-0.1-py2.7-win32.egg.

NB: I also copied the 'tcl' folder from my Python 2.7.3 (CPython) install into the folder containing the pypy.exe executable.

I just ran the lib-tk\test\runtktests.py on my pypy install, with the following results:

testLoadTk (test_tkinter.test_loadtk.TkLoadTest) ... skipped 'No $DISPLAY set.'testLoadTkFailure (test_tkinter.test_loadtk.TkLoadTest) ... oktest_search (test_tkinter.test_text.TextTest) ... oktest_horizontal_range (test_ttk.test_extensions.LabeledScaleTest) ... oktest_initialization (test_ttk.test_extensions.LabeledScaleTest) ... oktest_resize (test_ttk.test_extensions.LabeledScaleTest) ... oktest_variable_change (test_ttk.test_extensions.LabeledScaleTest) ... oktest_widget_destroy (test_ttk.test_extensions.LabeledScaleTest) ... FAILtest_initialization (test_ttk.test_extensions.OptionMenuTest) ... oktest_menu (test_ttk.test_extensions.OptionMenuTest) ... oktest_widget_destroy (test_ttk.test_extensions.OptionMenuTest) ... FAILtest_convert_stringval (test_ttk.test_functions.InternalFunctionsTest) ... oktest_dict_from_tcltuple (test_ttk.test_functions.InternalFunctionsTest) ... oktest_format_elemcreate (test_ttk.test_functions.InternalFunctionsTest) ... oktest_format_layoutlist (test_ttk.test_functions.InternalFunctionsTest) ... oktest_format_mapdict (test_ttk.test_functions.InternalFunctionsTest) ... oktest_format_optdict (test_ttk.test_functions.InternalFunctionsTest) ... oktest_list_from_layouttuple (test_ttk.test_functions.InternalFunctionsTest) ... oktest_list_from_statespec (test_ttk.test_functions.InternalFunctionsTest) ... oktest_script_from_settings (test_ttk.test_functions.InternalFunctionsTest) ... oktest_val_or_dict (test_ttk.test_functions.InternalFunctionsTest) ... oktest_multivalues (test_ttk.test_functions.TclObjsToPyTest) ... oktest_nosplit (test_ttk.test_functions.TclObjsToPyTest) ... oktest_unicode (test_ttk.test_functions.TclObjsToPyTest) ... oktest_configure (test_ttk.test_style.StyleTest) ... oktest_layout (test_ttk.test_style.StyleTest) ... oktest_lookup (test_ttk.test_style.StyleTest) ... oktest_map (test_ttk.test_style.StyleTest) ... oktest_theme_use (test_ttk.test_style.StyleTest) ... oktest_identify (test_ttk.test_widgets.WidgetTest) ... oktest_widget_state (test_ttk.test_widgets.WidgetTest) ... oktest_invoke (test_ttk.test_widgets.ButtonTest) ... oktest_invoke (test_ttk.test_widgets.CheckbuttonTest) ... oktest_invoke (test_ttk.test_widgets.RadiobuttonTest) ... oktest_postcommand (test_ttk.test_widgets.ComboboxTest) ... oktest_values (test_ttk.test_widgets.ComboboxTest) ... oktest_virtual_event (test_ttk.test_widgets.ComboboxTest) ... oktest_bbox (test_ttk.test_widgets.EntryTest) ... oktest_identify (test_ttk.test_widgets.EntryTest) ... oktest_revalidation (test_ttk.test_widgets.EntryTest) ... oktest_validation (test_ttk.test_widgets.EntryTest) ... oktest_validation_options (test_ttk.test_widgets.EntryTest) ... oktest_add (test_ttk.test_widgets.PanedwindowTest) ... oktest_forget (test_ttk.test_widgets.PanedwindowTest) ... oktest_insert (test_ttk.test_widgets.PanedwindowTest) ... oktest_pane (test_ttk.test_widgets.PanedwindowTest) ... oktest_sashpos (test_ttk.test_widgets.PanedwindowTest) ... oktest_custom_event (test_ttk.test_widgets.ScaleTest) ... oktest_get (test_ttk.test_widgets.ScaleTest) ... oktest_set (test_ttk.test_widgets.ScaleTest) ... FAILtest_add_and_hidden (test_ttk.test_widgets.NotebookTest) ... oktest_forget (test_ttk.test_widgets.NotebookTest) ... oktest_index (test_ttk.test_widgets.NotebookTest) ... oktest_insert (test_ttk.test_widgets.NotebookTest) ... oktest_select (test_ttk.test_widgets.NotebookTest) ... oktest_tab (test_ttk.test_widgets.NotebookTest) ... oktest_tab_identifiers (test_ttk.test_widgets.NotebookTest) ... oktest_tabs (test_ttk.test_widgets.NotebookTest) ... oktest_traversal (test_ttk.test_widgets.NotebookTest) ... oktest_bbox (test_ttk.test_widgets.TreeviewTest) ... oktest_children (test_ttk.test_widgets.TreeviewTest) ... oktest_column (test_ttk.test_widgets.TreeviewTest) ... oktest_delete (test_ttk.test_widgets.TreeviewTest) ... oktest_detach_reattach (test_ttk.test_widgets.TreeviewTest) ... oktest_exists (test_ttk.test_widgets.TreeviewTest) ... oktest_focus (test_ttk.test_widgets.TreeviewTest) ... oktest_heading (test_ttk.test_widgets.TreeviewTest) ... oktest_heading_callback (test_ttk.test_widgets.TreeviewTest) ... skipped 'skipping pending resolution of Issue #10734'test_index (test_ttk.test_widgets.TreeviewTest) ... oktest_insert_item (test_ttk.test_widgets.TreeviewTest) ... oktest_set (test_ttk.test_widgets.TreeviewTest) ... oktest_tag_bind (test_ttk.test_widgets.TreeviewTest) ... oktest_tag_configure (test_ttk.test_widgets.TreeviewTest) ... ok======================================================================FAIL: test_widget_destroy (test_ttk.test_extensions.LabeledScaleTest)----------------------------------------------------------------------Traceback (most recent call last):  File "C:\pypy-c-jit-latest-win32\lib-python\2.7\lib-tk\test\test_ttk\test_extensions.py", line 25, in test_widget_destroy    self.assertRaises(Tkinter.TclError, x.tk.globalgetvar, var)AssertionError: TclError not raised======================================================================FAIL: test_widget_destroy (test_ttk.test_extensions.OptionMenuTest)----------------------------------------------------------------------Traceback (most recent call last):  File "C:\pypy-c-jit-latest-win32\lib-python\2.7\lib-tk\test\test_ttk\test_extensions.py", line 202, in test_widget_destroy    self.assertRaises(Tkinter.TclError, optmenu.tk.globalgetvar, name)AssertionError: TclError not raised======================================================================FAIL: test_set (test_ttk.test_widgets.ScaleTest)----------------------------------------------------------------------Traceback (most recent call last):  File "C:\pypy-c-jit-latest-win32\lib-python\2.7\lib-tk\test\test_ttk\test_widgets.py", line 522, in test_set    self.assertEqual(self.scale.get(), max + 10)AssertionError: 6.0 != 11.0----------------------------------------------------------------------Ran 73 tests in 2.214s


tkinter is not shipped with pypy itself,there is a package to make it work on pypi

http://pypi.python.org/pypi/tkinter-pypy/