当前位置: 首页 > 知识库问答 >
问题:

Pyinstaller Exe生成的带有tkinter GUI的Exe不工作

越星晖
2023-03-14

我的程序由:

>

  • 是一系列功能的治疗。它将两个csv文件作为输入,并返回一行的pandas DataFrame。最后一个函数名为add_data()

    一个test()函数,调用add_data(),将结果保存在csv文件中,并在执行结束时通知用户

    包括我处理的整个代码会太长,但我显式导入的是:pandas、geopandas、shapely.geometrio、tkinter(见下面的代码)。因为我以前解决了这个问题,所以在使用geopandas时似乎也需要pyproj

    如果需要,我可以提供将脚本转换为.exe时得到的整个提示输出。值得提及的是,我得到了:

    >

  • 一些不包括进口的PySide、PyQt5、gtk、matplotlib、PyQt4、tkinter

    81853 INFO: Looking for dynamic libraries
    81931 WARNING: lib not found: tbb.dll dependency of ...\mkl_tbb_thread.dll
    81978 WARNING: lib not found: msmpi.dll dependency of C:\Users\...\bin\mkl_blacs_msmpi_lp64.dll
    82509 WARNING: lib not found: pgf90rtl.dll dependency of C:\Users\...\bin\mkl_pgi_thread.dll
    82525 WARNING: lib not found: pgc14.dll dependency of C:\Users\...\bin\mkl_pgi_thread.dll
    82556 WARNING: lib not found: pgf90.dll dependency of C:\Users\...\bin\mkl_pgi_thread.dll
    82587 WARNING: lib not found: msmpi.dll dependency of C:\Users\...\bin\mkl_blacs_msmpi_ilp64.dll
    82634 WARNING: lib not found: mpich2mpi.dll dependency of C:\Users\...\bin\mkl_blacs_mpich2_lp64.dll
    82712 WARNING: lib not found: mpich2mpi.dll dependency of C:\Users\...\bin\mkl_blacs_mpich2_ilp64.dll
    82869 WARNING: lib not found: impi.dll dependency of C:\Users\...\bin\mkl_blacs_intelmpi_lp64.dll
    83025 WARNING: lib not found: impi.dll dependency of C:\Users\...\bin\mkl_blacs_intelmpi_ilp64.dll
    
      null
    from tkinter import Tk, Frame, Label, Button, Entry,\
    filedialog as fd, messagebox
    
    ## Functions that will be called by user interaction with the GUI    
    def test(file_L, file_T, directory):
    
        df_test = add_data(file_L, file_T) # calls the previous treatment
    
        path=str(directory)+'/'+'test_result.csv'
        df_test.to_csv(path, encoding='utf-8', index=False)
    
        messagebox.showinfo("End", "The treatment is done")
    
    def execute_test(inputL, inputT, inputD):
        try:
            return test(inputL.filedir.get(), 
                    inputT.filedir.get(), 
                    inputD.selecdir.get())
        except:
            messagebox.showerror("Error", "The program failed to launch.\n"\
                                 "Either the inputs are not correct, or an "\
                                 "intern error occured.") 
    
    # Class Button + Entry to select a csv file
    class Selection:
        def __init__(self, master):
            self.filedir = Entry(master, bd=2)
            self.load_button = Button(master, text="...", bg='yellow',
                                      command=self.loadFile)     
    
        def loadFile(self):
            self.filename = fd.askopenfilename(
                    filetypes = (("csv files","*.csv"),("all files","*.*"))
                            ) 
    
            self.filedir.delete(0,"end")
            self.filedir.insert(0, self.filename)
    
    # Class Button + Entry to select a directory
    class Directory:
        def __init__(self, master):
            self.selecdir = Entry(master, bd=2)
            self.load_button = Button(master, text="...", bg='yellow',
                                      command=self.loadDir)
    
        def loadDir(self):
            self.dirname = fd.askdirectory()
            self.selecdir.delete(0,"end")
            self.selecdir.insert(0, self.dirname)
    
    # GUI itself
    if __name__=='__main__': 
    
        from functools import partial
    
        #-----Defining the root
        root = Tk()
        root.geometry("+800+400")
    
        #-----Defining the Frames                   
        f2 = Frame(root)
        f2.grid_columnconfigure(0, weight=2) 
        f2.grid_columnconfigure(1, weight=1)            
        f2.grid_rowconfigure(0, weight=1) 
        f2.grid_rowconfigure(1, weight=1)
        f2.grid_rowconfigure(2, weight=1)              
        f2.grid_rowconfigure(3, weight=1) 
        f2.grid_rowconfigure(4, weight=1) 
        f2.grid_rowconfigure(5, weight=1)      
    
        f3 = Frame(root)
    
        #-----Defining the widgets
        TextL = Label(f2, text="Please select file L :")
        L = Selection(f2) 
    
        TextT = Label(f2, text="Please select file T :")
        T = Selection(f2) 
    
        TextD = Label(f2, text="Please select the directory in which the result "\
                       "will be saved as a csv :") 
        D = Directory(f2)
    
    
        b_validate = Button(f3, text="Execute", bg='cyan',
                            command = partial(execute_test, L, T, D))
        b_exit = Button(f3, text="Exit", bg='red', command = root.destroy)
    
        #-----Geometry managers    
        f2.pack(expand=True)
        f3.pack(side='right')
    
        TextL.grid(row=0)
        L.filedir.grid(row=1, column=0, sticky='ew')
        L.load_button.grid(row=1, column=1, sticky='w') 
    
        TextT.grid(row=2)
        T.filedir.grid(row=3, column=0, sticky='ew')
        T.load_button.grid(row=3, column=1, sticky='w')    
    
        TextD.grid(row=4)  
        D.selecdir.grid(row=5, column=0, sticky='ew')
        D.load_button.grid(row=5, column=1, sticky='w')
    
        b_validate.pack(side='left')
        b_exit.pack(side='left')
    
    
        root.mainloop()
    
  • 共有1个答案

    崔涵亮
    2023-03-14

    跟随@M.R回答这个问题的建议和有用的陈述是:

    • 可以忽略警告
    • 因为我在命令提示符中没有错误跟踪,所以似乎阻塞的不是我发布的代码,而是
    • 之前发布的代码

    我逐个函数检查了我治疗的细节。它似乎一个功能(至少)使整个事情不起作用。

     类似资料:
    • 我正在生成一个。当我尝试运行它时,一个。日志是用以下行生成的:回溯(最近一次调用):文件“cuasimodo.py”,第1077行,在IOError:[Errno 2]中没有这样的文件或目录:“index”。json' 显然index.json是我程序的一个文件,它和其他文件在同一个文件中,但是找到它有一些问题。有什么想法吗?

    • 我一直在尝试将jar转换为exe。该程序(jar)使用蓝牙库“Bluecove”,这是某个目录中的另一个jar。该程序还使用Java Swing,通常是JFrame等。当从Netbeans或Eclipse中运行时,该程序运行良好。现在是我部署它的时候了,因此我需要将其转换为exe。但我一直无法让最终的可执行文件与“Bluecove”链接。我尝试了JSmooth和Launch4j,但是使用这两个工具

    • 我对spring boot和创建我的第一个应用程序非常陌生。创建数据源时,我使用了带有前缀的@ConfigurationProperties和要从Application.Property中读取的属性。 但是,这个设置似乎对我不起作用,我的程序没有运行。 我的pom.xml文件包含: 我的存储库类: 我的主要类: 请让我知道如果我需要提供任何其他信息以及。

    • 我试图生成一个. docx从超文本标记语言字符串与docx4j在Java,其中包含Base64图像里面。目前,我能够生成Word并下载它(在一个Vaadin项目内),但图像没有正确插入。但是,如果我把超文本标记语言代码放入index.html页面,它们确实显示正确! 我使用的代码是这样的: 有没有什么特别的工作应该做,而我没有做? 编辑: 我现在可以插入图片了!用以下代码替换行下方和行上方的代码:

    • 我试着做一个*。使用pyqtgraph的python应用程序中的exe文件和使用pyinstaller的pyqt库。Pyinstaller生成单个*。exe文件没有错误,但当我尝试启动它时,我得到一个未找到pyqtgraph的错误。 如何构建单个*。使用pyinstaller的exe文件?

    • 当Spring集成使用操作执行调用时,会出现异常: 这是Java类HttpURLConnection中的问题,因为它不支持补丁操作。 我必须使用方法。处理这种情况的最佳方法是什么?