Search code examples
pythontkinterexecx-freeze

Convert Tkinter py file into EXE file


im trying to convert my tkinter file into EXE using cx_freeze, but i got this error all the time the error

translation of the hebrew part: module didnt found

my setup file code is:

    import sys
from cx_Freeze import setup, Executable
import os

os.environ['TCL_LIBRARY'] = "C:\\Users\\royreznik\\AppData\\Local\\Programs\\Python\\Python36-32\\tcl\\tcl8.6"
os.environ['TK_LIBRARY'] =  "C:\\Users\\royreznik\\AppData\\Local\\Programs\\Python\\Python36-32\\tcl\\tk8.6"


build_exe_options = {"includes": ["tkinter"]}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
    name = "simple_Tkinter",
    version = "0.1",
    description = "Sample cx_Freeze Tkinter script",
    options = {"build_exe": build_exe_options},
    executables = [Executable("tal1.py", base = base)])

and my main file is:

from tkinter import *
root = Tk()


Entry1 = Entry(root)
Entry2 = Entry(root)

Entry1.grid(row=0)
Entry2.grid(row=1)

Label1 = Label(root, text="null")
Label1.grid(row=4)

def funca():
    phrase = Entry1.get()
    words = phrase.split()
    wordCount = 0;
    for word in words:
        if word == Entry2.get():
            wordCount = wordCount+1
    Label1.configure(text=wordCount)

btn = Button(root, text="get Num",command=funca)
btn.grid(row=3)



root.mainloop()

whats the problem?


Solution

  • In your Python directory's DLLs folder you will find tk86t.dll and tcl86t.dll. You have to copy them into the build folder with the main.py you want to compile.

    Then you have to add these two files to the include_files parameter in your setup.py.

    Now, your setup.pyshould look like something like this :

    import os
    from cx_Freeze import setup, Executable
    
    os.environ['TCL_LIBRARY'] = 'c:/python36/tcl/tcl8.6'
    os.environ['TK_LIBRARY'] = 'c:/python36/tcl/tk8.6'
    
    buildOptions = dict(
        packages = [],
        excludes = [],
        include_files=['c:/python36/DLLs/tcl86t.dll', 'c:/python36/DLLs/tk86t.dll']
    )
    
    import sys
    base = 'Win32GUI' if sys.platform=='win32' else None
    
    executables = [
        Executable('editor.py', base=base)
    ]
    
    setup(name='editor',
          version = '1.0',
          description = '',
          options = dict(build_exe = buildOptions),
          executables = executables)
    

    Of course you may have to adapt the directories paths to make it work.