Я работаю над утилитой для автоматического создания снимка экрана каждые несколько секунд.
Ожидаемое поведение: при нажатии кнопки «Пуск» окно Tkinter будет свернуто и сохранит снимок экрана. в месте, указанном в поле поля ввода. При нажатии на кнопку паузы снимок экрана будет остановлен.
Этот код работает в IDE, но когда мы сжимаем его как exe, он не работает. При нажатии на кнопку «Пуск» открывается несколько окон приложения, и оно не делает снимки экрана каждые 2 секунды.
Я использовал autopytoexe для сжатия кода в exe (выбранные параметры в autopytoexe Один файл /На базе Windows).
Почему он работает в IDE, а не в EXE?
import os
import tkinter as tk
import time
from datetime import datetime
from threading import Thread
import pyscreenshot as ImageGrab
from PIL import ImageTk,Image
location = " "
flag=False
img_load=''
#Screenshot function to create screenshot
def take_Screenshot():
image_name = f"Screenshot_{str(datetime.now().strftime('%Y%m%d_%H%M%S'))}"
screenshot = ImageGrab.grab()
print(f"Added the location : {location} ")
filepath = f"{location}/{image_name}.png"
screenshot.save(filepath)
return filepath
def screen_capture():
global flag
while flag:
take_Screenshot()
time.sleep(2)
else:
print("Stopped Screen Printing")
`#To Check the entered path is valid or not`
def path_check():
global location
location = input_box.get()
print(f"Entered Path : {location}")
if os.path.exists(location):
return True
else:
err_msg.config(text="Path does not Exists Check the path!")
root.after(3000, lambda: err_msg.config(text=''))
def start_buttonFunc():
if path_check():
global flag
print(flag)
flag=True
screen_capture()
def pause_capture():
global flag
flag=False
screen_capture()
root = tk.Tk()
root.title("Auto Screenshot Saver")
frame = tk.Frame(root)
frame.rowconfigure(0, weight=1)
frame.columnconfigure(0, weight=1)
Lbl1 = tk.Label(root, text="*****AUTO SCREENSHOT SAVER*****", fg="Black", bg="Pink")
Lbl1.config(font=("Castellar", 40, "bold"))
Lbl1.pack()
Lbl2 = tk.Label(frame, text="ENTER SCREENSHOT SAVE LOCATION : ")
Lbl2.config(font=("Arial Black", 20, "bold"))
Lbl2.pack(side='left', ipadx=1, ipady=10, pady=10)
Lbl3 = tk.Label(frame)
Lbl3.config(font=("Arial Black", 10, "bold"))
Lbl3.pack(side='left', ipadx=1, ipady=10, pady=0)
input_box = tk.Entry(frame)
input_box.pack(side='left', padx=10, ipadx=150, ipady=10, pady=10)
st_btn = tk.Button(frame, text="START", bg="Green", command=lambda: Thread(target=start_buttonFunc).start())
st_btn.config(font=("Arial Black", 10, "bold"))
st_btn.pack(side='top', padx=10, ipadx=30, ipady=10, pady=10)
pause_btn = tk.Button(frame, text="PAUSE", bg="YELLOW", command=lambda: Thread(target=pause_capture).start())
pause_btn.config(font=("Arial Black", 10, "bold"))
pause_btn.pack(side='top', padx=10, ipadx=30, ipady=10, pady=10)
stp_btn = tk.Button(frame, text="IMPORT", bg="GREY", command=import_images)
stp_btn.config(font=("Arial Black", 10, "bold"))
stp_btn.pack(side='top', padx=10, ipadx=30, ipady=10, pady=10)
err_msg = tk.Label(root)
err_msg.config(font=("Arial Rounded MT Bold", 15, "bold"),fg='Red')
err_msg.pack(side='top', ipadx=10, ipady=10, expand=True, fill='both')
frame.pack()
root.mainloop()
Подробнее здесь: https://stackoverflow.com/questions/789 ... pening-mul