Currently I'm trying to convert my tkinter python script to a exe file. I'm using cx_freeze to do this. When i try to add an aditional file, it somehow is not working anymore. In the minimum example I'm using below you can see the method I've used.
import tkinter as tk
import numpy.core._methods, numpy.lib.format
class Main(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.geometry("700x400")
self.wm_iconbitmap('test.ico')
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage, PageOne):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
frame.update_page() # <-- update data on page when you click button
def get_page(self, page_class):
return self.frames[page_class]
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
label1 = tk.Label(self, text="What are the sizes?")
label1.pack()
L1 = tk.Label(self, text="Length :")
L1.pack()
self.E1 = tk.Entry(self)
self.E1.pack()
button = tk.Button(self, text="Next", command=lambda: controller.show_frame(PageOne))
button.pack()
def update_page(self): # empty method but I need it
pass
class PageOne(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
label1 = tk.Label(self, text="You have insert")
label1.pack()
# create empty label at start
self.label2 = tk.Label(self, text="")
self.label2.pack()
button = tk.Button(self, text="Back", command=lambda: controller.show_frame(StartPage))
button.pack()
def update_page(self):
# update label when page is changed
page1 = self.controller.get_page(StartPage)
var = page1.E1.get()
self.label2['text'] = var
app = Main()
app.mainloop()
The second script:
import cx_Freeze
import sys
import matplotlib
import os
import numpy.core._methods
import numpy.lib.format
base = None
if sys.platform=='win32':
base = "Win32GUI"
executables = [cx_Freeze.Executable("Show_file.py")]
cx_Freeze.setup(
name = "Name",
options = {"build_exe":{"packages":["tkinter","matplotlib"],"include_files":["test.ico"]}},
version="0.01",
executables=executables)
When I try to build the exe file, it works when i do not add an icon. However in case I try to add an icon, the exe does not open anymore. Furthermore, when I try to add a database excel file, I get the message that such a file does not exist. Allo the files are in the correct folder. That is not the problem.
Could somebody help me with this problem?
Many thanks in advance.
See Question&Answers more detail:
os