我正在尝试使用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的问题,但是那些是关于编译的。我的脚本已经被编译过了,它没有抛出任何异常,但是窗口没有显示...