2014-04-28 71 views
0

我製作了這個我用cx_freeze編譯的小計算器。它計算一些東西,並在消息框中給你答案。當我從IDLE運行它時工作正常,但是當我從.exe運行它時,它會打開使用Tkinter創建的GUI,但是如果按下我的計算按鈕,應該彈出消息框,它會在我的dos shell中出現以下錯誤:在Tkinter的回調 回溯Python 3.2 Cx_Freeze不會編譯整個tkinter

「異常(最新最後調用): 文件 「C:\ Python32 \ LIB \ tkinter__init __ PY」,行1399,在通話 回報self.func(*參數) 文件 「calculator1.pyw」 46行,在energyKinetic NameError:全局名稱 '消息框' 沒有定義」

我用下面的 'setup.py':

from cx_Freeze import setup, Executable 


setup(
    name = 'Kinetic Energy Calculator', 
    version = '0.1', 
    description = 'Calculate', 
    executables = [Executable('calculator1.pyw')], 
) 

並從cmd運行'C:\ Python32> python setup.py build'。

計算器本身的代碼只是siple Tkinter GUI,帶有按鈕,標籤,條目和消息框,所以我沒有看到在這裏發佈它的共鳴,除非當然有人會發現它需要我做所以。 那麼,有沒有什麼重要的我沒有把它放在setup.py中,以便它能夠正確編譯?

回答

2

您將不得不使用tkinter窗口創建自定義消息框,因爲當嘗試啓動程序而不是按F5按鈕時,實際的消息框並不存在。換句話說,你無法解決它。你必須創建新的窗口。

+0

那麼,我將不得不讓我的主窗口打開另一個窗口 - 類似的東西?換句話說,我不會使用messageboxe,而是會使用看起來像messagebox的新窗口?順便說一句,感謝Win32GUI的東西,幫助我也噸:) – NumeroSMG

+0

是的,使窗戶看起來像messageboxes,而不是做'新'窗口,你應該''頂層'你的主窗口。 –

0

你也忘了加上基本選項:

setup(
     name = 'Kinetic Energy Calculator', 
     version = '0.1', 
     description = 'Calculate', 
     executables = [Executable('calculator1.pyw', base="Win32GUI")] 
     ) 

雖然它仍然無法正常工作,Tkinter的現在被認可。