当前位置: 首页 > 面试题库 >

按下绘图按钮后,cx_Freeze转换的GUI应用程序(tkinter)崩溃

秦阳旭
2023-03-14
问题内容

我已经处理了好几天了,希望能有所帮助。我用导入的模块tkinter,numpy,scipy,matplotlib开发了一个GUI应用程序,该模块在python本身中运行良好。转换为exe后,一切都按预期工作,但matplotlib节则无效。当我按定义的绘图按钮时,exe只是关闭而没有显示任何绘图。因此,我想举一个最小的例子,我只绘制了一个sin函数,而我面临着同样的问题:在python中工作完美,当将其转换为exe时,按下图按钮会崩溃。这是最小的示例:

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计算机,并且正在使用带有Python 3.4.3的WinPython发行版。


问题答案:

在使用相同的 test.py
测试PyInstaller时,我找到了解决该问题的方法(或至少是一种解释)。我收到有关缺少dll文件的错误消息,该文件为
mkl_intel_thread.dll

我搜索了该文件,并在 numpy 文件夹中找到它。我将与 mkl _ *。dlllibiomp5md.dll
匹配的文件复制到了was创建的 test.exe 所在的目录中python setup.py build。此后,最小的 test.exe
在按下 按钮时显示了matplotlib窗口。

这些文件位于文件夹 lib \ site-packages \ numpy \ core中



 类似资料:
  • 我多次尝试让developers.android(https://developer.android.com/training/basics/firstapp/index.html)上的MyFirstApp教程中的应用程序发挥作用。我正在Nexus4设备上测试我的代码,该设备装有Android 4.4.2 AndroidManifest.xml: MainActivity.java Display

  • E/AndroidRuntime:致命异常:主进程:com。维内特。计算器,PID:29435 java。lang.NullPointerException:尝试调用虚拟方法的布尔java。朗,布尔<代码>在此输入代码booleanValue()”在com的空对象引用上。维内特。计算器主要活动16美元。android上的onClick(MainActivity.java:177)。看法看法andr

  • 09-08 07:58:32.915 137 26-13726/com.ruthadeaton.bld3.calculator e/androidruntime:致命异常:main process:com.ruthadeaton.bld3.calculator.calculator,PID:13726 java.lang.numberformatexception:empty string ats

  • 问题内容: 我一直试图在Eclipse中制作我的第一个android应用程序(一个简单的温度转换器),但是当我单击手机上的按钮时,该应用程序崩溃了。这是完整的Java代码 单击按钮时的LogCat 最后是按钮的xml 我不确定如何解决此问题,因此希望有人可以提供帮助。谢谢。 问题答案: 首先初始化您的按钮,然后将onclicklistener设置为它们 同样设置另一个按钮

  • 在这个孩子的acitivy我有一个页面有一个旋转器和一个按钮。 首先,按钮是工作的,但当我点击旋转器,应用程序将崩溃。为了解决这个问题,我必须改变 至 我在活动中得到了这个方法,但他没有找到这个方法,因为我查看了contentView=LayoutInflater.from(getParent()).Inflate(r.layout.show_add_expresse_event,null);se

  • 我是一个java初学者,但我试图构建练习,我遇到了这个问题。用户输入捐赠,按下按钮,捐赠的值就会增加。我写了整个代码,但当我点击按钮添加捐款计数时,应用程序崩溃了。我遵循老师的所有教诲。我在活动中创建了一个方法,在ui构建器中,我转到单击按钮属性并将其设置为该方法。它应该很顺利,但每当我点击按钮时,它就崩溃了。这是我的活动,我将onClick属性设置为ComputeDoniversity。 这是模