我正在尝试通过py2exe制作一个exe。该程序正在使用 Tkinter 显示一个类似弹出的窗口。问题是,当我像这样运行设置时一切正常:
setup(windows = [{'script': "msg.py"}], zipfile = None)
但是当我尝试制作一个单一文件的exe时它失败了:
setup(windows = [{'script': "msg.py"}], zipfile = None, options = {'py2exe': {'bundle_files': 1, 'compressed': True}})
实际上最终的 exe 运行没有问题,但它不显示任何窗口。我已经读过在 Windows 7 上 bundle_files=1 可能存在问题,但我也尝试过 bundle_files=2 具有相同的效果。这是我的 msg.py 脚本:
from win32gui import FindWindow, SetForegroundWindow
from Image import open as iopen
from ImageTk import PhotoImage
from Tkinter import Tk, Label
from threading import Timer
from subprocess import Popen
import os
def Thread(t, fun, arg=None):
if arg<>None: x = Timer(t, fun, arg)
else: x = Timer(t, fun)
x.daemon = True
x.start()
def NewMessage():
global root
if not os.path.exists('dane/MSG'):
open('dane/MSG', 'w').write('')
root = Tk()
img = PhotoImage(iopen("incl/nowa.png"))
label = Label(root, image=img)
label.image = img
label.bind("<Button-1>", Click)
label.pack()
root.geometry('-0-40')
root.wm_attributes("-topmost", 1)
root.overrideredirect(1)
root.mainloop()
def Click(event):
global root, exit
root.destroy()
os.remove('dane/MSG')
OpenApp()
exit = True
def OpenApp():
hwnd = FindWindow(None, 'My program name')
if hwnd: SetForegroundWindow(hwnd)
else: Popen('app.exe')
root, exit = None, False
NewMessage()
有任何想法吗?我读过 Tkinter 存在一些问题,但有一些关于编译的问题。我的脚本已编译,它不会抛出任何异常,但不显示窗口......