我一直在處理這個好幾天了,希望能找到一些幫助。我開發了一個帶有導入模塊tkinter,numpy,scipy,matplotlib的GUI應用程序,它在Python本身中運行良好。轉換爲* .exe後,所有內容都按預期工作,但不是matplotlib部分。當我按下我定義的繪圖按鈕時,* .exe只是簡單地關閉並且不顯示任何繪圖。 所以我想做一個簡約的例子,在那裏我簡單地繪製一個sin函數,並且我面臨同樣的問題: 在python中完美工作時,將其轉換爲* .exe時,按下plot按鈕時崩潰。簡約的例子在這裏:cx_freeze轉換後的GUI應用程序(tkinter)崩潰後按劇情按鈕
import tkinter as tk
import matplotlib.pyplot as plt
import numpy as np
class MainWindow(tk.Frame):
def __init__(self):
tk.Frame.__init__(self,bg='#9C9C9C',relief="flat", bd=10)
self.place(width=x,height=y)
self.create_widgets()
def function(self):
datax = np.arange(-50,50,0.1)
datay = np.sin(datax)
plt.plot(datax,datay)
plt.show()
def create_widgets(self):
plot = tk.Button(self, text='PLOT', command=self.function)
plot.pack()
x,y=120,300
root=tk.Tk()
root.geometry(str(x)+"x"+str(y))
app = MainWindow()
app.mainloop()
並看到我的相應的「setup.py」與cx_freeze轉換。
import cx_Freeze
import matplotlib
import sys
import numpy
import tkinter
base = None
if sys.platform == "win32":
base = "Win32GUI"
executables = [cx_Freeze.Executable("test.py", base=base)]
build_exe_options = {"includes": ["matplotlib.backends.backend_tkagg","matplotlib.pyplot",
"tkinter.filedialog","numpy"],
"include_files":[(matplotlib.get_data_path(), "mpl-data")],
"excludes":[],
}
cx_Freeze.setup(
name = "test it",
options = {"build_exe": build_exe_options},
version = "1.0",
description = "I test it",
executables = executables)
可能解決這個問題的任何想法受到了高度評價。我正在使用64位Windows10機器,並且我正在使用WinPython發行版和Python 3.4.3。
知道這個問題是否與Windows 10相關,或者是否與其他Windows版本相同,將會很有趣。 –
啊,對不起,我忘了提及它。在Windows 7,64位機器上發生同樣的WinPython分發問題。 – PuseMuckeL
剛剛在32位XP上試過這個沒有問題,我會在64位win7以後嘗試它 –