2014-02-25 43 views
1

我已經在這個地方搜索了這個答案,但是我找不到答案。我有一個Python腳本(3.3),它與tkinter有一個接口。我用cx_freeze創建了一個可執行文件,它有一個包含一些文件和文件夾的構建文件夾。我雙擊.exe文件並沒有發生任何事情。我正在使用以下設置:用cx_freeze爲tkinter接口創建.exe文件

import sys 

from cx_Freeze import setup, Executable 



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

setup(
     name = "simple_Tkinter", 
     version = "0.1", 
     description = "Sample cx_Freeze Tkinter script", 
     executables = [Executable("the timer.py", base = base)]) 

如果我只是打開我的代碼並運行它的界面完美地工作。我在構建時沒有收到任何錯誤消息(至少沒有我能看到的... btw,我如何驗證它?)。任何想法可能是什麼問題?或任何其他替代模塊?

謝謝! :)

+0

如果您在命令提示符下運行該exe,會發生什麼情況? –

回答

3

我從編譯輸出/日誌,使之成爲一個評論,但我沒有信譽尚未...

任何警告/錯誤?

什麼時候在命令提示符下運行可執行文件?

您的可執行文件需要cx_freeze未找到的庫嗎?

你可能會需要像指定庫包含額外的選項... 調整在cx_freeze documentation您可以指定的例子包括使用TKinter:

import sys 
from cx_Freeze import setup, Executable 

# Dependencies are automatically detected, but it might need fine tuning. 
build_exe_options = {"includes": ["tkinter"]} 

# GUI applications require a different base on Windows (the default is for a 
# console application). 
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("the timer.py", base = base)]) 

setup( name = "guifoo", 
     version = "0.1", 
     description = "My GUI application!", 
     options = {"build_exe": build_exe_options}, 
     executables = [Executable("guifoo.py", base=base)]) 

我知道我有很多有趣的問題讓py2exe與PySide/PyQt4,matplotlib,numpy等一起工作。一些模塊,比如matplotlib,甚至提供了一個方法來列出構建/分發應用程序所需的所有數據文件(matplotlib.get_py2exe_datafiles())。 Enthought Traits的解決方案UI利用glob來獲取所需文件的目錄。我的觀點是,因爲某些庫中的模塊導入可能是動態的,雜亂的或黑魔法的,所以許多構建實用程序無法找到所有必需的資源。此外,一旦你的可執行文件正在工作,如果你發現你的應用程序不需要的發行版中的東西,你可以用其他選項排除它,這有助於減少發行版中的膨脹。希望TKinter不會太難以工作 - 看起來StackOverflow上的其他人是成功的。

對不起,我沒有堅如磐石的解決方案,但我正在盡力幫助!祝你好運!

+1

非常感謝您的回答。我發現了這個問題,並且感覺有點笨拙......我沒有在最後添加root.mainloop()......這是一個新手的錯誤,但我一定會牢記build_exe_options部分!再次感謝!! :) – rodrigocf