如何让pyinstaller导入ttk主题?

时间:2017-11-19 18:56:52

标签: python pyinstaller

我已经完成了一个项目,它位于以下

import tkinter as tk
from tkinter import ttk
import tkinter.messagebox as tmb
from ttkthemes import ThemedStyle

class UI(ttk.Frame):
    def __init__(self, parent=None):
        super(UI,  self).__init__(parent)
        self.parent = parent
        style = ThemedStyle(parent)
        style.set_theme("arc")
        self.parent.geometry("480x520")
        self.init_ui()

    def init_ui(self):
        self.parent.title("Nueva ventana heredada")
        self.entrada = ttk.Entry(self, text="ingresa")
        self.entrada.grid(row=2, column=2) 
        boton = ttk.Button(self, text="pulsame", command=self.ver)
        boton.grid(row=2, column=3)
        self.pack()

    def ver(self):
        try:
            res = int(self.entrada.get())
            print(res)
        except ValueError:
            tmb.showwarning(title = "error", message = " error")

if __name__== '__main__':
    root = tk.Tk() 
    sug = tk.Label(root, text="aqui es para escribir")
    sug.pack()
    app = UI(parent=root)
    app.mainloop()

当我使用pyinstaller创建一个exe时,它会释放导出的exe程序无法执行的错误:下面我保留它,因为我使用它,应该注意我已经使用了一个thema用于程序而我怀疑它是进口的。

pyinstaller --windowed ui.py -i icono.ico --onefile

错误

致命错误! 无法执行脚本ui

到类似的网址 https://es.stackoverflow.com/questions/118595/como-hacer-que-pyinstaller-importe-el-ttktheme

2 个答案:

答案 0 :(得分:2)

因为ttkthemes似乎与directorys有一些共同点,你可以通过修改spec文件来使它工作。

从pyinstaller为您的应用程序生成specfile,并添加以下内容(根据需要更改站点包的路径)

a= Analysis(.....datas=[],更改为:

data= [('venv\\Lib\\site-packages\\ttkthemes', 'ttkthemes')],

并将ttkthemes添加到hiddenimports

hiddenimports=['ttkthemes'],

这似乎对我有用

答案 1 :(得分:1)

代码对我很有用..看起来你没有成功导入ttkthemes,即它没有正确安装。因此,你应该再做一次。要安装ttkthemes(假设你已经有python3和设置工具):

sudo apt-get install python3-tk
sudo -H pip3 install ttkthemes

这应该完全正常。