Помогите код на питон должен создавать скриншоты но код их не создайте помогите пожалуйста - Общение Python мододелов
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Помогите код на питон должен создавать скриншоты но код их не создайте помогите пожалуйста

Регистрация
5 Дек 2013
Сообщения
96
Репутация
-3
Спасибо
0
Монет
0
Помогите код на питон должен создавать скриншоты но код их не создайте помогите пожалуйста import pyautogui

import keyboard

import os



# Папка для сохранения скриншотов

save_path = "skrin\D"

if not os.path.exists(save_path):

os.makedirs(save_path)



# Функция для создания скриншота

while True:

def take_screenshot():

# Определяем имя файла

files = os.listdir(save_path)

screenshot_number = len(files)

screenshot_name = os.path.join(save_path, f"{screenshot_number}.png")



# Делаем скриншот и сохраняем его

screenshot = pyautogui.screenshot()

screenshot.save(screenshot_name)

print(f"Скриншот сохранён: {screenshot_name}")



# Назначаем клавишу для создания скриншота

keyboard.add_hotkey('D', take_screenshot)



keyboard.wait('esc') # Программа завершится при нажатии 'esc'

 
Регистрация
12 Окт 2013
Сообщения
94
Репутация
0
Спасибо
0
Монет
0
Давай телеграмм, скину код.
Там есть небольшая хитрость, как заставить его делать не один скрин, а сколько захочешь.
 
Регистрация
12 Окт 2013
Сообщения
67
Репутация
0
Спасибо
0
Монет
0
Вы почти всё сделали правильно! Проблема в том, что вы поместили функцию take_screenshot внутри бесконечного цикла while True:. Это значит, что она будет вызываться бесконечно, не давая программе реагировать на нажатие клавиши 'D'.

Вот исправленный код:

import pyautogui
import keyboard
import os

# Папка для сохранения скриншотов
save_path = "skrin\D"
if not os.path.exists(save_path):
os.makedirs(save_path)

# Функция для создания скриншота
def take_screenshot():
# Определяем имя файла
files = os.listdir(save_path)
screenshot_number = len(files)
screenshot_name = os.path.join(save_path, f"{screenshot_number}.png")

# Делаем скриншот и сохраняем его
screenshot = pyautogui.screenshot()
screenshot.save(screenshot_name)
print(f"Скриншот сохранён: {screenshot_name}")

# Назначаем клавишу для создания скриншота
keyboard.add_hotkey('D', take_screenshot)

keyboard.wait('esc') # Программа завершится при нажатии 'esc'


Объяснение изменений:

1. Функция вне цикла: Функция take_screenshot теперь находится вне цикла while True:.
2. Назначение горячей клавиши: keyboard.add_hotkey('D', take_screenshot) происходит вне цикла, так как нам нужно назначить горячую клавишу только один раз.

Теперь программа будет ждать, пока вы не нажмёте клавишу 'D', чтобы сделать скриншот. После нажатия 'D' функция take_screenshot будет вызвана, и скриншоты будут создаваться по мере надобности.

Дополнительные советы:

* Проверка нажатия ESC: Вы можете добавить проверку на нажатие клавиши ESC в отдельной функции и использовать ее для завершения скриптов.
* Задержка: После создания скриншота вы можете добавить небольшую задержку (например, time.sleep(0.1)) для предотвращения проблем с производительностью.
* Обработка ошибок: Вы можете добавить блок try...except для обработки ошибок, которые могут возникнуть при создании скриншотов (например, если папка для сохранения недоступна).

Надеюсь, это поможет!
 
Регистрация
27 Июл 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
import pyautogui
import keyboard
import os

# Папка для сохранения скриншотов
save_path = "skrin\\D"
if not os.path.exists(save_path):
os.makedirs(save_path)

# Функция для создания скриншота
def take_screenshot():
# Определяем имя файла
files = os.listdir(save_path)
screenshot_number = len(files)
screenshot_name = os.path.join(save_path, f"{screenshot_number}.png")

# Делаем скриншот и сохраняем его
screenshot = pyautogui.screenshot()
screenshot.save(screenshot_name)
print(f"Скриншот сохранён: {screenshot_name}")

# Назначаем клавишу для создания скриншота
keyboard.add_hotkey('d', take_screenshot)

print("Программа запущена. Нажмите 'D' для создания скриншота или 'Esc' для выхода.")
keyboard.wait('esc') # Программа завершится при нажатии 'esc'
 
Регистрация
20 Окт 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
Ваш код имеет несколько проблем, которые могут мешать ему работать корректно. Вот исправленный и улучшенный вариант:

Функция take_screenshot должна быть определена вне цикла while True.

Использование keyboard.wait('esc') блокирует выполнение программы, поэтому лучше использовать бесконечный цикл с проверкой нажатия клавиши.

Проверка наличия папки для сохранения скриншотов должна быть выполнена один раз, а не в цикле.

Вот исправленный код:

python import pyautogui
import keyboard
import os

# Папка для сохранения скриншотов
save_path = "skrin\\D"
if not os.path.exists(save_path):
os.makedirs(save_path)

# Функция для создания скриншота
def take_screenshot():
# Определяем имя файла
files = os.listdir(save_path)
screenshot_number = len(files)
screenshot_name = os.path.join(save_path, f"{screenshot_number}.png")

# Делаем скриншот и сохраняем его
screenshot = pyautogui.screenshot()
screenshot.save(screenshot_name)
print(f"Скриншот сохранён: {screenshot_name}")

# Назначаем клавишу для создания скриншота
keyboard.add_hotkey('D', take_screenshot)

print("Нажмите 'D' для создания скриншота. Нажмите 'esc' для выхода.")

# Бесконечный цикл для проверки нажатия клавиши
while True:
if keyboard.is_pressed('esc'):
print("Выход из программы.")
break Этот код будет работать следующим образом:

Создает папку для сохранения скриншотов, если она не существует.

Определяет функцию take_screenshot, которая делает скриншот и сохраняет его в указанную папку.

Назначает горячую клавишу 'D' для создания скриншота.

В бесконечном цикле проверяет нажатие клавиши 'esc' для выхода из программы.

Теперь, когда вы нажмете 'D', скриншот будет сохранен в указанную папку, а нажатие 'esc' завершит выполнение программы.
 
Сверху Снизу