【发布时间】:2025-12-18 23:45:01
【问题描述】:
我的脚本运行顺利。然而,在使用 Pyinstaller 编译、启动 .exe 并单击开始按钮后,GUI 再次打开并崩溃。
def grabberfunc(*args):
im = ImageGrab.grab()
savedir=str(mappa)
savefile="Screenshot_"+str("{:%Y_%m_%d-%H_%M_%S}".format(datetime.datetime.now()))+".png"
savedirfile=join(savedir,savefile)
im.save(str(savedirfile))
def scanning():
interval=deftimeInput.get()
if running:
grabberfunc()
root.after(int(interval)*1000, scanning)
if __name__=='__main__':
root = tkinter.Tk()
...
有一个带有 2 个按钮的基本 GUI:“开始”设置“运行”变量“真”,“停止”反之亦然。 如果脚本运行,则 GUI 不会再次打开并按我想要的方式运行。
【问题讨论】:
-
你能从命令行运行 .exe 吗?这将使窗口保持打开状态,您将能够看到任何错误。
-
不幸的是没有错误和警告。 exe 从命令行运行,出现下一个提示。当我单击“开始”按钮时,GUI 再次出现,但没有警告。
-
如果我在调试中运行 exe,当 GUI 再次打开时,我在命令行中得到完全相同的消息。可能与“扫描”函数中的递归调用有关?
-
问题不在于递归,而在于调用pyscreenshot的grab()方法的那一行。如果省略此行,exe 运行良好。然而,如果没有这个功能,程序的目的就无法实现。
标签: python tkinter screenshot pyinstaller