Я делаю приложение для обоев. Приложение будет иметь функцию слайд-шоу и отдельных обоев. Дело в том, что приложение не работает должным образом в том, что если пользователь сосредоточится на другом приложении, обои будут черными. Но сколько бы я ни старался, обои всегда становятся черными. Даже если я сосредоточусь на рабочем столе. Я стараюсь столько, сколько хочу, но он всегда становится черным, а обои редко возвращаются обратно.
КОД:
import tkinter as tk
from tkinter import filedialog, messagebox
import os
from time import sleep
import ctypes
import threading
import win32gui
BLACK_WALLPAPER = "C:\\Windows\\Web\\Screen\\img0.jpg" # Siyah ekran yolu
default_wallpaper = None
current_wallpaper = None
app_window_title = "Duvar Kağıdı Uygulaması"
def set_wallpaper(image_path):
global current_wallpaper
if current_wallpaper != image_path:
ctypes.windll.user32.SystemParametersInfoW(20, 0, image_path, 3)
current_wallpaper = image_path
label.config(text=f"Duvar kağıdı ayarlandı: {image_path}")
def select_file():
global default_wallpaper
file_path = filedialog.askopenfilename(filetypes=[("Image Files", "*.png;*.jpg;*.jpeg")])
if file_path:
default_wallpaper = file_path
set_wallpaper(file_path)
input_frame.pack_forget()
def select_folder():
folder_path = filedialog.askdirectory()
if folder_path:
response = messagebox.askquestion("Slayt Gösterisi", "Klasör yüklensin mi?")
if response == 'yes':
input_frame.pack(pady=10)
start_slideshow_thread(folder_path)
def save_duration():
duration = entry.get()
try:
global slideshow_duration
slideshow_duration = float(duration) * 60 # Dakika -> Saniye
label.config(text=f"Slayt Süresi: {duration} dakika")
except ValueError:
label.config(text="Geçerli bir sayı giriniz.")
def start_slideshow_thread(folder_path):
thread = threading.Thread(target=start_slideshow, args=(folder_path,))
thread.daemon = True
thread.start()
def start_slideshow(folder_path):
global default_wallpaper
try:
images = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.lower().endswith((".png", ".jpg", ".jpeg"))]
if not images:
label.config(text="Klasörde görüntü bulunamadı.")
return
default_wallpaper = images[0]
while True:
for image in images:
set_wallpaper(image)
sleep(slideshow_duration)
except Exception as e:
label.config(text=f"Hata: {e}")
def check_focus():
global default_wallpaper, current_wallpaper
while True:
active_window = win32gui.GetForegroundWindow()
window_title = win32gui.GetWindowText(active_window)
window_class = win32gui.GetClassName(active_window)
# Eğer kullanıcı masaüstüne dönüyorsa
if window_class == "WorkerW": # "WorkerW" sınıfı masaüstü penceresinin sınıfıdır
if default_wallpaper and current_wallpaper != default_wallpaper:
set_wallpaper(default_wallpaper) # Seçilen duvar kağıdını geri yükle
current_wallpaper = default_wallpaper # Güncellenmiş wallpaper'ı sakla
elif window_title == app_window_title:
pass # Uygulamaya odaklanıldığında hiçbir şey yapma
else:
# Eğer başka bir uygulamaya odaklanıldığında, duvar kağıdını siyah yap
if current_wallpaper != BLACK_WALLPAPER:
set_wallpaper(BLACK_WALLPAPER)
current_wallpaper = BLACK_WALLPAPER # Siyah duvar kağıdını sakla
sleep(2)
root = tk.Tk()
root.title(app_window_title)
root.geometry("400x400")
btn_file = tk.Button(root, text="Dosya Seç", command=select_file)
btn_file.pack(pady=10)
btn_folder = tk.Button(root, text="Klasör Seç", command=select_folder)
btn_folder.pack(pady=10)
input_frame = tk.Frame(root)
tk.Label(input_frame, text="Slayt geçiş süresi (dakika):").pack(side=tk.LEFT, padx=5)
entry = tk.Entry(input_frame)
entry.pack(side=tk.LEFT, padx=5)
tk.Button(input_frame, text="Kaydet", command=save_duration).pack(side=tk.LEFT, padx=5)
input_frame.pack_forget()
label = tk.Label(root, text="Bir dosya veya klasör seçin.")
label.pack(pady=20)
slideshow_duration = 60 # 1 min default.
focus_thread = threading.Thread(target=check_focus)
focus_thread.daemon = True
focus_thread.start()
root.mainloop()
< /code>
Когда я возвращаюсь на рабочий стол, указанные обои должны вернуться. Когда я сосредотачиваюсь на применении, я хочу, чтобы обои были черными.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ase-python
Мне нужна помощь, пожалуйста. (Python) ⇐ Python
Программы на Python
1737882129
Anonymous
Я делаю приложение для обоев. Приложение будет иметь функцию слайд-шоу и отдельных обоев. Дело в том, что приложение не работает должным образом в том, что если пользователь сосредоточится на другом приложении, обои будут черными. Но сколько бы я ни старался, обои всегда становятся черными. Даже если я сосредоточусь на рабочем столе. Я стараюсь столько, сколько хочу, но он всегда становится черным, а обои редко возвращаются обратно.
КОД:
import tkinter as tk
from tkinter import filedialog, messagebox
import os
from time import sleep
import ctypes
import threading
import win32gui
BLACK_WALLPAPER = "C:\\Windows\\Web\\Screen\\img0.jpg" # Siyah ekran yolu
default_wallpaper = None
current_wallpaper = None
app_window_title = "Duvar Kağıdı Uygulaması"
def set_wallpaper(image_path):
global current_wallpaper
if current_wallpaper != image_path:
ctypes.windll.user32.SystemParametersInfoW(20, 0, image_path, 3)
current_wallpaper = image_path
label.config(text=f"Duvar kağıdı ayarlandı: {image_path}")
def select_file():
global default_wallpaper
file_path = filedialog.askopenfilename(filetypes=[("Image Files", "*.png;*.jpg;*.jpeg")])
if file_path:
default_wallpaper = file_path
set_wallpaper(file_path)
input_frame.pack_forget()
def select_folder():
folder_path = filedialog.askdirectory()
if folder_path:
response = messagebox.askquestion("Slayt Gösterisi", "Klasör yüklensin mi?")
if response == 'yes':
input_frame.pack(pady=10)
start_slideshow_thread(folder_path)
def save_duration():
duration = entry.get()
try:
global slideshow_duration
slideshow_duration = float(duration) * 60 # Dakika -> Saniye
label.config(text=f"Slayt Süresi: {duration} dakika")
except ValueError:
label.config(text="Geçerli bir sayı giriniz.")
def start_slideshow_thread(folder_path):
thread = threading.Thread(target=start_slideshow, args=(folder_path,))
thread.daemon = True
thread.start()
def start_slideshow(folder_path):
global default_wallpaper
try:
images = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.lower().endswith((".png", ".jpg", ".jpeg"))]
if not images:
label.config(text="Klasörde görüntü bulunamadı.")
return
default_wallpaper = images[0]
while True:
for image in images:
set_wallpaper(image)
sleep(slideshow_duration)
except Exception as e:
label.config(text=f"Hata: {e}")
def check_focus():
global default_wallpaper, current_wallpaper
while True:
active_window = win32gui.GetForegroundWindow()
window_title = win32gui.GetWindowText(active_window)
window_class = win32gui.GetClassName(active_window)
# Eğer kullanıcı masaüstüne dönüyorsa
if window_class == "WorkerW": # "WorkerW" sınıfı masaüstü penceresinin sınıfıdır
if default_wallpaper and current_wallpaper != default_wallpaper:
set_wallpaper(default_wallpaper) # Seçilen duvar kağıdını geri yükle
current_wallpaper = default_wallpaper # Güncellenmiş wallpaper'ı sakla
elif window_title == app_window_title:
pass # Uygulamaya odaklanıldığında hiçbir şey yapma
else:
# Eğer başka bir uygulamaya odaklanıldığında, duvar kağıdını siyah yap
if current_wallpaper != BLACK_WALLPAPER:
set_wallpaper(BLACK_WALLPAPER)
current_wallpaper = BLACK_WALLPAPER # Siyah duvar kağıdını sakla
sleep(2)
root = tk.Tk()
root.title(app_window_title)
root.geometry("400x400")
btn_file = tk.Button(root, text="Dosya Seç", command=select_file)
btn_file.pack(pady=10)
btn_folder = tk.Button(root, text="Klasör Seç", command=select_folder)
btn_folder.pack(pady=10)
input_frame = tk.Frame(root)
tk.Label(input_frame, text="Slayt geçiş süresi (dakika):").pack(side=tk.LEFT, padx=5)
entry = tk.Entry(input_frame)
entry.pack(side=tk.LEFT, padx=5)
tk.Button(input_frame, text="Kaydet", command=save_duration).pack(side=tk.LEFT, padx=5)
input_frame.pack_forget()
label = tk.Label(root, text="Bir dosya veya klasör seçin.")
label.pack(pady=20)
slideshow_duration = 60 # 1 min default.
focus_thread = threading.Thread(target=check_focus)
focus_thread.daemon = True
focus_thread.start()
root.mainloop()
< /code>
Когда я возвращаюсь на рабочий стол, указанные обои должны вернуться. Когда я сосредотачиваюсь на применении, я хочу, чтобы обои были черными.
Подробнее здесь: [url]https://stackoverflow.com/questions/79388244/i-need-help-please-python[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия