【问题标题】:Executable created from python script only fires up a DOS window从 python 脚本创建的可执行文件只启动一个 DOS 窗口
【发布时间】:2020-10-20 19:14:13
【问题描述】:

我想将名为 DEEPEM_GANTT.py 的 Python 脚本转换为可执行文件。 我在网上看了几个教程,决定使用 pyinstaller 来完成这个操作。

我继续使用 pip 将 pywin32 和 pyinstaller 安装到我的 Python 虚拟环境中:

pip install pywin32
pip install pyinstaller

我第一次尝试转换我的脚本 (pyinstaller --onefile DEEPEM_GANTT.py) 返回了一个错误 (FFi' object has no attribute 'unpack') 但在更新 cffi 后我能够生成一个名为 DEEPEM_GANTT.exe 的 .exe 文件。

唉,当双击这个文件时,它会启动一个 DOS 窗口,而不是启动它原本要打开的 tkinter 对话框。我究竟做错了什么?任何帮助将不胜感激。


我的脚本复制如下。该脚本旨在根据使用多个传感器获取的数据创建甘特图。该脚本在从 Python 终端启动时运行良好:

import scipy.io
import os 
import plotly.figure_factory as ff
from plotly.offline import plot
from struct import *
import datetime
from tkinter import filedialog
from tkinter import *



root = Tk()
filename = filedialog.askdirectory(title="Select the folder where your sites are stored")
root.destroy()

myroot=filename



df=[]

for folder in os.listdir(myroot):
    if os.path.isdir(myroot+'/'+folder):
        for subfolder in os.listdir(myroot+'/'+folder):
            if os.path.isdir(myroot+'/'+folder+'/'+subfolder) and subfolder[:4]=='meas':
                starttime_string=subfolder[5:]
                starttime=datetime.datetime.strptime(starttime_string, "%Y-%m-%d_%H-%M-%S")

                for atsfilename in os.listdir(myroot+'/'+folder+'/'+subfolder):
                    if atsfilename[-3:]=='ats':
                        file_stats=os.stat(myroot+'/'+folder+'/'+subfolder+'/'+atsfilename)
                        if file_stats.st_size>0:
                            file=open(myroot+'/'+folder+'/'+subfolder+'/'+atsfilename,'rb')
                            file.seek(4)
                            byte=file.read(4)
                            nos=unpack('i', byte)[0]
                            file.seek(8)
                            byte2=file.read(4)
                            sampling=unpack('f',byte2)[0]
                            duration=nos/sampling
                            stoptime=starttime+datetime.timedelta(seconds=duration)  
                            adu=atsfilename[:3]
                
                df.append(dict(Task=folder+'_'+adu, Start=str(starttime), Finish=str(stoptime), Resource=str(sampling)))



fig = ff.create_gantt(df, index_col='Resource', show_colorbar=True, group_tasks=True)
plot(fig)

【问题讨论】:

    标签: python tkinter pyinstaller


    【解决方案1】:

    这是制作窗口 GUI 的基本 pyinstaller 代码。

    pyinstaller --onefile -w DEEPEM_GANTT.py 
    

    -w 要求窗口化。也可以使用标志--windowed--noconsole

    查看here了解更多信息。

    【讨论】:

    • 感谢您的快速回复,酷云。使用-w 就可以了!可执行文件现在打开 Tkinter 对话窗口,因此您的答案恰到好处。稍后我仍然遇到Fatal Error,但那是另一个故事......
    • @Sheldon 很高兴知道,请随时询问有关新错误的新问题。
    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2019-04-16
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2015-08-15
    相关资源
    最近更新 更多