我试图冻结我使用PyQT5,Matplolib和Python 3.3制作的小GUI。 我是初学者,所以请原谅我的无知。
该计划有: - 一个QMainWindow - 两个带有Matplotlib图的辅助QDialog - 我用来存储变量的一个Variables_Module(而不是使用全局变量) - 一个名为ROI的自定义类
从Python终端运行时,代码运行正常。
问题:当运行使用cx_freeze获得的exe时,QMainWindow被加载,用户选择数据并立即在第一个QDialog中显示数据。第二个QDialog使用存储在" Variables_Module"中的变量。并且应该显示matplotlib hist2d但没有出现。
出于这个原因,我认为Variables_Modules不会以某种方式包含在构建中。
Main.py包含以下内容:
import sys, time
from PyQt5.QtCore import Qt, pyqtSignal, QObject
from PyQt5.QtWidgets import QWidget, QApplication, QMainWindow, QFormLayout, QVBoxLayout,QFileDialog, QDialog, QPushButton, QGridLayout, QMessageBox, QSlider, QSpinBox, QGroupBox, QLabel, QCheckBox, QComboBox, QColorDialog, QProgressDialog
from HySP_main_GUI import Ui_Main
import numpy
from matplotlib.pylab import *
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QTAgg as NavigationToolbar
from matplotlib.figure import Figure
import matplotlib.pyplot as pyplot
#these are the "custom" modules
import Variables_Module
from ROI import Resizable_animated_rect
from scipy import ndimage
我试过包含" custom"每个组合中的setup.py中的模块为Includes
或includefiles
或packages
,但没有解决方案。
我明白我不应该把这些模块放在任何地方,但我没有想法。
此外,所有文件(Main.py,ROI.py,Variables_Module.py)都位于同一文件夹中,运行cx_freeze build
时不会出错。
我使用的setup.py是:
import sys
from cx_Freeze import setup, Executable
includes = ["ROI","Variables_Module"]
includefiles = ['ROI.py','Variables_Module.py']
excludes = [ 'Tkinter']
packages = ["ROI","Variables_Module"]
path = []
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {
"includes": includes,
"include_files": includefiles,
"excludes": excludes,
"packages": packages,
"path": path
}
# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
exe = None
if sys.platform == "win32":
exe = Executable(
script="E:\\Python\\Projects\\test\\test.py",
initScript = None,
base="Win32GUI",
compress = True,
copyDependentFiles = True,
appendScriptToExe = False,
appendScriptToLibrary = False,
icon = None
)
setup(
name = "test",
version = "0.1",
author = 'test',
description = "My GUI!",
options = {"build_exe": build_exe_options},
executables = [exe]
)
答案 0 :(得分:1)
似乎警告会停止冻结的exe。 在绘制我的新图像之前,显示了一些关于NaN的警告,显然是在阻止应用继续进行计算。
我解决了在麻烦的功能中使用以下方法抑制警告:
import warnings
warnings.simplefilter("ignore")
这解决了这个问题。花了2天。 -_-'