Python Forum
Help with cx_Freeze - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Help with cx_Freeze (/thread-32257.html)



Help with cx_Freeze - mederic39 - Jan-30-2021

Hi! Smile
I'm French, sorry for my bad English speaking.
I try to freeze my project in executable file with "cx_Freeze".
I have a file "main.py" and an other "setup.py". I built my file with the "build" command, it works...
Then I double-clicked my ".exe" file to run it, and I have this error :

[Image: 144864112_122495319746188_54165558793253...e=6039D6D6]

Line 1357 is :
fen = Tk()
(I imported tkinter)

• Why do I have this error ? How to fix it ?


RE: Help with cx_Freeze - snippsat - Jan-30-2021

Pyinstaller is usually a better choice.

tkinter.tix
Quote:Deprecated since version 3.6: This Tk extension is unmaintained and should not be used in new code. Use tkinter.ttk instead.
So do you use tix module in code?
tix and tk are two separate modules.
They have some widgets that have similar names, but they are not interchangeable libraries.

So i have a some old cx_Freeze code,so if not find a module most include it.
# make_exe.py
from cx_Freeze import setup,Executable
import sys

# Replaces commandline arg 'build'
#sys.argv.append("build")

# If need to include/exclude module/packages
includes = ['tix']
excludes = []
packages = []

# Console or Win32GUI
base = None
if sys.platform == "win32":
    #base = 'Console'
    base = 'Win32GUI'

# Name of file to make ".exe" of
filename = "code.py"
setup(
    name = 'Myapp',
    version = '0.1',
    description = 'Test',
    options = {'build_exe': {'excludes':excludes,'packages':packages,'includes':includes}},
    executables = [Executable(filename, base=base, icon = None)])

# From command line
#python make_exe.py build



RE: Help with cx_Freeze - mederic39 - Jan-31-2021

Thanks for your reply...
But I don't use "tix"... Snooty
So this is not the problem.


RE: Help with cx_Freeze - snippsat - Jan-31-2021

It try to load tix module,so i would try Pyinstaller instead of troubleshoot on this.

Quick test.
# tk_test.py
import tkinter as tk

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.var = tk.StringVar()
        self.var.trace("w", self.show_message)
        self.entry = tk.Entry(self, textvariable=self.var)
        self.btn = tk.Button(self, text="Clear",
                             command=lambda: self.var.set(""))
        self.label = tk.Label(self)
        self.entry.pack()
        self.btn.pack()
        self.label.pack()

    def show_message(self, *args):
        value = self.var.get()
        text = f"Hello, {value}!" if value else ""
        self.label.config(text=text)

if __name__ == "__main__":
    app = App()
    app.mainloop()
Using Python 3.9.1 and Pyinstaller 4.2(pip install pyinstaller).
C:\code\tk_exe
λ python -V
Python 3.9.1

C:\code\tk_exe
λ pyinstaller --version
4.2
Icon here call it idea.ico

Usage pyinstaller --onefile --windowed --icon=idea.ico tk_test.py
C:\code\tk_exe
λ pyinstaller --onefile --windowed --icon=idea.ico tk_test.py
66 INFO: PyInstaller: 4.2
67 INFO: Python: 3.9.1
68 INFO: Platform: Windows-10-10.0.19041-SP0
71 INFO: wrote C:\code\tk_exe\tk_test.spec
.....
9558 INFO: Appending archive to EXE C:\code\tk_exe\dist\tk_test.exe
9571 INFO: Building EXE from EXE-00.toc completed successfully.
In dist folder tk_test.exe.
[Image: CDwPRF.png]