Ответ 1
Во-первых, я дам вам знать, что я определил условия гонки в Python Tkinter при использовании с непотоковым Tcl/Tk (Py2 поставляется с этим) и предложил исправление. Я не уверен, что исправил все возможные условия гонки, но я исправил все, с чем столкнулся.
Теперь, чтобы иметь возможность отлаживать проблемы Tcl/Tk, вам нужно собрать Python с отладочной версией Tcl/Tk и внедрить его. Это должно дать вам возможность заглянуть в tk*.dll
в отладчике и увидеть, что не так.
-
Получите исходный код для вашей версии Python и внесите следующие изменения:
--- a/PCbuild/prepare_tcltk.bat +++ b/PCbuild/prepare_tcltk.bat @@ -46,10 +46,10 @@ rem if ERRORLEVEL 1 (echo Cannot locate python.exe on PATH or as PYTHON variable call "%PCBUILD%\get_externals.bat" --tkinter-src %ORG_SETTING% -%MSBUILD% "%PCBUILD%\tcl.vcxproj" /p:Configuration=Release /p:Platform=Win32 -%MSBUILD% "%PCBUILD%\tk.vcxproj" /p:Configuration=Release /p:Platform=Win32 -%MSBUILD% "%PCBUILD%\tix.vcxproj" /p:Configuration=Release /p:Platform=Win32 +%MSBUILD% "%PCBUILD%\tcl.vcxproj" /p:Configuration=Debug /p:Platform=Win32 +%MSBUILD% "%PCBUILD%\tk.vcxproj" /p:Configuration=Debug /p:Platform=Win32 +%MSBUILD% "%PCBUILD%\tix.vcxproj" /p:Configuration=Debug /p:Platform=Win32 -%MSBUILD% "%PCBUILD%\tcl.vcxproj" /p:Configuration=Release /p:Platform=x64 -%MSBUILD% "%PCBUILD%\tk.vcxproj" /p:Configuration=Release /p:Platform=x64 -%MSBUILD% "%PCBUILD%\tix.vcxproj" /p:Configuration=Release /p:Platform=x64 +%MSBUILD% "%PCBUILD%\tcl.vcxproj" /p:Configuration=Debug /p:Platform=x64 +%MSBUILD% "%PCBUILD%\tk.vcxproj" /p:Configuration=Debug /p:Platform=x64 +%MSBUILD% "%PCBUILD%\tix.vcxproj" /p:Configuration=Debug /p:Platform=x64
-
запустите
PCBuild\prepare_tcltk.bat
из командной строки VS, чтобы загрузить и собрать Tcl/Tk из исходного кода- Обратите внимание, что Tk (и Tix) не могут быть собраны с последними версиями WinSDK и должны быть исправлены. Так что запустите
.bat
(он потерпит неудачу), исправьте загруженные исходники и запустите его снова.
- Обратите внимание, что Tk (и Tix) не могут быть собраны с последними версиями WinSDK и должны быть исправлены. Так что запустите
-
Теперь
PCBuild\readme.txt
отладочный Python как обычно (в инструкции естьPCBuild\readme.txt
).